蛇形填数
时间限制:3000 ms | 内存限制:65535 KB
难度:3
- 描述
- 在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方陈为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
- 输入
- 直接输入方陈的维数,即n的值。(n<=100)
- 输出
- 输出结果是蛇形方陈。
- 样例输入
3
- 样例输出
7 8 1
6 9 2
5 4 3
#include <iostream>
#include <cmath>
#include <cstdio> using namespace std; int main(){ int n;
cin>>n;
int **a = new int *[n];
for (int i = ; i < n ; i++)
{
a[i] = new int[n];
}
int sum = ;
int x = , y = n-;
int circle = ;
while (sum<n*n)
{
while (x<n-circle) //down
{
a[x][y] = sum++;
x++;
}
while (y>circle-)
{
a[x][y] = sum++;
y--;
}
while (x>circle-)
{
a[x][y] = sum++;
x--;
}
while (y<n-circle)
{
a[x][y] = sum++;
y++;
}
x++;y--;
circle++;
}
if (n%!=)
{
a[x][y] = n*n;
}
int i,j;
for (i = ; i < n ; i++)
{
for (j = ; j < n-; j++)
{
cout<<a[i][j]<<" ";
}
cout<<a[i][j]<<endl;
} return ;
}