/*
螺旋数字正方形
题目描述
打印螺旋数字正方形
输入描述
输入一个整数n,1<=n<=31
输出描述
输出数字正方形。
注意,每个数字占4个字符,右对齐,不全则补足空格;
*/
#include
#include
#include
using namespace std;
void setMatrix(int **matrix,int x,int y,int start,int n)
{
if(n <= 0)
return;
if(n == 1)
{
matrix[x][y] = start;
return;
}//上边
for(int j = y; j< n + y - 1; ++j)
{
matrix[x][j] = start ++;
}//右边
for(int i = x; i < x + n - 1; ++ i)
{
matrix[i][n + x - 1] = start ++;
}
for(int j = n + y - 1; j > y; --j)
{
matrix[n + x - 1][j] = start ++;
}
for(int i = x + n - 1; i > x; -- i)
{
matrix[i][y] = start ++;
}
setMatrix(matrix,x + 1,y + 1,start,n - 2);
}
int main()
{
int n;
cin >> n;
if(n >= 1 && n <= 31)
{
int **matrix = new int*[n];
for(int i = 0; i < n; i ++)
{
matrix[i] = new int[n];
}
setMatrix(matrix,1,n);
for(int i = 0; i < n; i ++)
{
for(int j = 0; j < n; j ++)
cout << setw(4) << matrix[i][j];
cout << endl;
}
}
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。