Description
蛇形针回字阵:
如3*3:
回字阵:
7 6 5
8 1 4
9 2 3
Input
多组数据:
每一行一个正整数n(n为奇数,<26),代表n*n矩阵。
Output
输出回字阵(字段宽度为4).
Sample Input
5
Sample Output
21 20 19 18 17
22 7 6 5 16
23 8 1 4 15
24 9 2 3 14
25 10 11 12 13
Source
新生杯
1 #include<iostream> 2 #include <cstdio> 3 using namespace std; 4 5 int main() 6 { 7 int n; 8 while(cin>>n) 9 { 10 int a[n][n]; 11 for(int i=0;i<n;i++) 12 for(int j=0;j<n;j++) 13 a[i][j]=0; 14 15 for(int i=0;i<n;i++)//对角线初始化 16 a[i][i]=(n-i*2)*(n-i*2)-(n-i*2-1); 17 18 for(int i=0;i<n;i++)//根据对角线填入数字(左上部分) 19 { 20 for(int j=1+i;j<n-i-1;j++)//上边部分 21 a[i][j]=a[i][j-1]-1; 22 for(int j=1+i;j<n-i;j++)//左边部分 23 a[j][i]=a[j-1][i]+1; 24 } 25 26 for(int i=n-1;i>=0;i--)//根据对角线填入数字(右下部分) 27 { 28 for(int j=n-(n-i+1);j>=n-1-i;j--)//右边部分 29 a[j][i]=a[j+1][i]+1; 30 for(int j=n-(n-i+1);j>=n-i;j--)//下边部分 31 a[i][j]=a[i][j+1]-1; 32 } 33 34 for(int i=0;i<n;i++) 35 { 36 for(int j=0;j<n;j++) 37 { 38 printf("%4d",a[i][j]); 39 } 40 cout<<endl; 41 } 42 } 43 return 0; 44 }
时间: 2024-11-09 15:21:29