void nMatrix(int n)
{
int *p = new int[n*n];
int i, j, k, num, index, INC = 1;
num = 1;
k = n;
i = 0;
j = -1;
while(num <= n*n)
{
index = 0;
while(index++ < k)
{
j += INC;
*(p+i*n+j) = num;
num++;
}
k -= 1;
index = 0;
while(index++ < k)
{
i += INC;
*(p+i*n+j) = num;
num++;
}
INC = -INC;
}
cout << endl << n << "矩阵的回旋数为:/n/n";
for(i=0; i<n*n; i++)
{
cout << setw(5) << *(p+i) << ' ';
if((i+1)%n == 0)
cout << endl;
}
delete[] p;
}
{
int *p = new int[n*n];
int i, j, k, num, index, INC = 1;
num = 1;
k = n;
i = 0;
j = -1;
while(num <= n*n)
{
index = 0;
while(index++ < k)
{
j += INC;
*(p+i*n+j) = num;
num++;
}
k -= 1;
index = 0;
while(index++ < k)
{
i += INC;
*(p+i*n+j) = num;
num++;
}
INC = -INC;
}
cout << endl << n << "矩阵的回旋数为:/n/n";
for(i=0; i<n*n; i++)
{
cout << setw(5) << *(p+i) << ' ';
if((i+1)%n == 0)
cout << endl;
}
delete[] p;
}
本文介绍了一个使用C++实现的螺旋填充矩阵算法。该算法通过控制循环的起始位置和方向来将数字1至n*n按螺旋顺序填充到一个n×n的矩阵中,并输出填充后的矩阵。对于喜欢算法挑战和数据结构探索的读者来说,这是一个很好的实践案例。
2319

被折叠的 条评论
为什么被折叠?



