首页 > 代码库 > 1160 蛇形矩阵
1160 蛇形矩阵
1160 蛇形矩阵
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 白银 Silver
题目描述 Description
小明玩一个数字游戏,取个n行n列数字矩阵(其中n为不超过100的奇数),数字的填补方法为:在矩阵中心从1开始以逆时针方向绕行,逐圈扩大,直到n行n列填满数字,请输出该n行n列正方形矩阵以及其的对角线数字之和.
输入描述 Input Description
n(即n行n列)
输出描述 Output Description
n+1行,n行为组成的矩阵,最后一行为对角线数字之和
样例输入 Sample Input
3
样例输出 Sample Output
5 4 3
6 1 2
7 8 9
25
1 #include<iostream> 2 using namespace std; 3 int now=1; 4 int a[101][101]; 5 int s=0; 6 int fx=1;// 1右 2左 3上 4下 7 int tot=1; 8 int ans=0; 9 int main()10 {11 int n;12 cin>>n;13 s=n/2+1;14 int i=s;15 int j=s;16 a[i][j]=now;17 now++;18 while(tot!=n*n)19 {20 if(fx==1&&j-i==1)21 {22 fx=3;23 //a[i][j]=now;24 //now++;25 // tot++;26 }27 if(fx==2&&i==j)28 {29 fx=4;30 //a[i][j]=now;31 // now++;32 // tot++;33 }34 if(fx==3&&(i+j==n+1))35 {36 fx=2;37 //a[i][j]=now;38 // now++;39 // tot++;40 }41 if(fx==4&&(i+j==n+1))42 {43 fx=1;44 //a[i][j]=now;45 // now++;46 // tot++;47 }48 if(fx==1)// 1右 2左 3上 4下 49 {50 j++;51 a[i][j]=now;52 now++;53 tot++;54 }55 if(fx==2)// 1右 2左 3上 4下 56 {57 j--;58 a[i][j]=now;59 now++;60 tot++;61 }62 if(fx==3)// 1右 2左 3上 4下 63 {64 i--;65 a[i][j]=now;66 now++;67 tot++;68 }69 if(fx==4)// 1右 2左 3上 4下 70 {71 i++;72 a[i][j]=now;73 now++;74 tot++;75 }76 }77 for(int i=1;i<=n;i++)78 {79 for(int j=1;j<=n;j++)80 {81 cout<<a[i][j]<<" ";82 if((i+j==n+1)||(i==j))83 ans=ans+a[i][j];84 }85 cout<<endl;86 }87 cout<<ans;88 return 0;89 }
1160 蛇形矩阵
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。