64,648
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
void fill (int **a, int l);
int main()
{
/*first initialize the 2D array*/
int **array;
int lenth;
cin>> lenth;
array = new int *[lenth];//// 动态二维数组用法
for(int k = 0; k< lenth; k++)
{
array[k] = new int [lenth];
}
fill (array, lenth);//函数调用
//打印处理后的数组
for (int i = 0; i < lenth; i ++)
cout<<endl;
for (int j = 0; j < lenth; j++)
{
cout<<array[i][j]<<" ";
}
return 0;
}
void fill( int **a, int l)
{
int i = 0, j = 0;
int number = 1;
int d =1;//d的数字表示移动状态,初始状态为向下一步
for (int k = 0; k < l*l; k++)
{
a[i][j] = number;
number++;
switch (d)
{
case 1://向下
i++;
if (j ==0)
d = 3;
else d = 4;
break;
case 2://向右
j++;
if (i == 0)
d = 4;
else d = 3;
break;
case 3://右上
j++;
i--;
if (j == l-1)
d = 1;
else d = 2;
break;
case 4://左下
i++;
j--;
if ( j==l-1)
d = 2;
else d = 1;
break;
}
}
}