返回题解分享
讨论 / 题解分享/ 帖子详情

蛇形填数2 - 题解

找固定移动模式,模拟即可

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 110;
int n,m,a[N][N],b[N][N];
void solve(){
cin>>m>>n;
int x=0,y=n-1,cnt=1,d=0;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
b[0][n-1] = 1;
a[0][n-1] = 1;
while(cnt<n*m){
while(x<m-1-d&&!a[x+1][y]){
b[++x][y] = ++cnt;
a[x][y] = 1;
}while(y!=d&&!a[x][y-1]){
b[x][--y] = ++cnt;
a[x][y] = 1;
}while(x!=d&&!a[x-1][y]){
b[--x][y] = ++cnt;
a[x][y] = 1;
}
while(y<n-1&&!a[x][y+1]){
b[x][++y] = ++cnt;
a[x][y] = 1;
}
d+=1;
}
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
printf("%5lld",b[i][j]);
}printf("\n");
}
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int t=1;
while(t--)solve();
return 0;
}
0 回复 0 转发 0 喜欢 1 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!