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

哪位高手帮我编一个程序~ 多谢了!!!
因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;
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网