蛇形矩阵 |
Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KB |
Total submit users: 44, Accepted users: 44 |
Problem 11315 : No special judgement |
Problem description |
按要求打印一个n x n的矩阵 |
Input |
输入n |
Output |
输出 n x n的矩阵(0 < n < 10) 输出格式: C printf(“%3d”, ....) C++ cout << setw(3) << ... |
Sample Input |
1 2 3 |
Sample Output |
1 1 2 4 3 1 2 3 8 9 4 7 6 5 |
#include <iostream>
#include <cstdio>
using namespace std;
#define maxn 10+5
int a[maxn][maxn];
int main(void)
{
int n;
while(cin>>n){
int count = 1;
int x,y,round;
if(n == 1){
a[0][0] = count;
}else{
for(round=0; round<n/2; round++){
x = round;
for(y=round;y<n-round;y++){
a[x][y]=count;
count++;
}
y = n - round - 1;
for(x=round+1;x<n-round-1;x++){
a[x][y]=count;
count++;
}
x = n - round - 1;
for(y=n-round-1;y>=round;y--){
a[x][y]=count;
count++;
}
y = round;
for(x=n-round-1-1;x>round;x--){
a[x][y]=count;
count++;
}
}
if(n%2 == 1){
a[n/2][n/2] = count;
}
}
for(x=0;x<n;x++){
for(y=0;y<n;y++){
printf("%3d",a[x][y]);
}
printf("\n");
}
}
return 0;
}