如何用C/C++语言编一个n*n的数组~

来源:百度知道 编辑:UC知道 时间:2024/05/24 15:55:15
哪位高手帮我编一个程序~ 多谢了!!!
因matlab计算太慢了,准备改用C语言编程~因为刚学C语言,希望高手们能帮帮我!

是一个n*n的数组~ (可设n10至50之间的某一个整数)
数组的元素分别为1,2,3,4,并且1,2,3,4的排列是随机的!
其中,1占80%,2点8%,3占10%,4占2%;

若用matlab 语言,则为:

function x=kk(n,a,b,c)
%n=30;
x=ones(n,n);
ind=randperm(n^2);
x(ind(1:round(n^2*a/100)))=2;
x(ind(round(n^2*a/100)+1:round(n^2*a/100)+round(n^2*b/100)))=3;
x(ind(round(n^2*a/100)+round(n^2*b/100)+1:round(n^2*a/100)+round(n^2*b/100)+round(n^2*c/100)))=4;

当:n取10,结果如下:
X=
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 4 1 2 1 1
1 1 1 1 1 1 1 1 2 1
1 4 3 1 2 3 1 1 1 1
1 1 1 1 1 1 1 1 1 1
3 1 1 1 1 1 3 1 3 1
1 1 1 1 2 2 1 1 1 1
1 1 1 1 1 2 3 1 1 1
1 1 1 1 2 3 1 3 1 1
1 1 1 3 1 2 3 1 1 1
1占80%,2点8%,3占10%,4占2%;
最好的结果是:
元素1,2,3,4的百分含量是可是改变的,只要它们之和是1就可以了.即1占a%,2点b%,3占c%,d占2%;其中:a+b+c+d=100.

matlab 上学期学的,考得还不错,不过现在忘光了!
如果你要建立n*n的数组,这样就可以了!
int** p = new int*[n];
for (int i = 0; i < n; i++)
*(p+i) = new int[n];
当你最后用完这个数组的时候,再这样把申请的动态内存删除
for (int i = 0; i < n; i++)
delete *(p+i);
delete p;