这道题的动态储存分配是什么意思啊?怎么做?
对于每一个正整数n,输出一个n X n蛇形阵列。要求使用动态存储分配,
输入描述
正整数有多个
输出描述
每个阵列中整数占5位,每阵列输出阵列后输出一空行
输入样例
7 输出样例
28 29 39 40 46 47 49
16 27 30 38 41 45 48
15 17 26 31 37 42 44
7 14 18 25 32 36 43
6 8 13 19 24 33 35
2 5 9 12 20 23 34
1 3 4 10 11 21 22
怎么修改?
#include <iostream>
using namespace std;
int main ()
{
int a[100][100];
int n,i,j,c=2;
cin>>n;
i=n-1,j=0,a[i][j]=1;
while (i>=0)
{if (i<1) j=j+1;
else i=i-1;
a[i][j]=c;
while (i<n-1&&j<n-1)
{i=i+1;
j=j+1;
c=c+1;
a[i][j]=c;
}
if (j<n-1) j=j+1;
else i=i-1;
c=c+1;
a[i][j]=c;
while (i>0&&j>0)
{i=i-1;
j=j-1;
c=c+1;
a[i][j]=c;
}
c=c+1;
}
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
{cout<<a[i][j]<<' ';}
cout<<endl;
}
return 0;
}
[解决办法]
二维数组定义
- C/C++ code
int **a = new int*[n];for(i = 0; i < n; i++){ a[i] = new int[n];}
[解决办法]
动态分配内存的意思就是随着数据的增长分配内存,你分配了个二维数组一开始就限定了分配内存的大小,用new来分配内存可以根据你实际的需要来分配内存,就是所谓的动态分配