输入两个整数n和m,输出一个n行m列的矩阵,将数字 1 到 n*m 按照回字蛇形填充至矩阵中。
具体矩阵形式可参考样例。
输入格式
输入共一行,包含两个整数n和m。
输出格式
输出满足要求的矩阵。
矩阵占n行,每行包含m个空格隔开的整数。
数据范围
1≤n,m≤100
输入样例:
3 3
输出样例:
1 2 3
8 9 4
7 6 5
这题的重点在于将方向保存再两个数组中,之后再模拟方向的变化进行矩阵的填补。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34#include<bits/stdc++.h> using namespace std; int main() { int n,m; cin>>n>>m; int dx[]={-1,0,1,0},dy[]={0,1,0,-1}; int q[110][110]; int i; int d=1; int x=0,y=0; for(i=1;i<=n*m;i++) { q[x][y]=i; int a=x+dx[d],b=y+dy[d]; if(a<0||a>=n||b<0||b>=m||q[a][b])//如果出界或者碰到已经填过的地方 { d=(d+1)%4;//换方向 a=x+dx[d],b=y+dy[d]; } x=a; y=b; } for(i=0;i<n;i++) { for(int j=0;j<m;j++) { cout<<q[i][j]<<" "; } cout<<endl; } return 0; }
最后
以上就是老迟到大雁最近收集整理的关于AcWing-756.蛇形矩阵.的全部内容,更多相关AcWing-756内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复