7 条题解
-
0
重点理解while循环的内容,理解蛇形填数的排布
#include<bits/stdc++.h> using namespace std; const int N=110; int a[N][N]; int m,n; //矩阵行、列 int x,y; //数字 1 的坐标 int number; // 记录数字的个数 int main(){ cin>>m>>n; memset(a,0,sizeof(a)); //初始化 1 的坐标 (0,n-1) x=0; y=n-1; a[x][y]=1; number=1; while(number<m*n){ //顺时针填写数字 while(x+1 < m && !a[x+1][y]) a[++x][y] = ++number; //从上到下:x轴++,y轴不变 :x++,number++,a[x][y]=number; while(y-1 >= 0 && !a[x][y-1]) a[x][--y] = ++number; //从右到左:x轴不变,y轴-- while(x-1>=0 && !a[x-1][y]) a[--x][y] = ++number; //从下到上 :x轴--,y轴不变 while(y+1<n && !a[x][y+1]) a[x][++y] = ++number; //从左到右 :x轴不变,y轴++ } //打印出来 for(int i=0;i<m;i++){ for(int j=0;j<n;j++) printf("%5d",a[i][j]); cout<<endl; } cout<<endl; return 0; }
信息
- ID
- 78
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 682
- 已通过
- 175
- 上传者