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

蛇形填数2 - 题解

#include <cstdio>
#include <cmath>
#include<iostream>
using namespace std;
int a[200][200];
int flag[200][200];
int main(){
	int m,n;
	cin>>m>>n;
	int x=n,y=1;
	int count=1;
	
	int num=1;
	while(num<=n*m){
		while(y<=m&&flag[x][y]!=1&&num<=n*m){
			flag[x][y]=1;
			a[x][y]=num;
			num++;
			y++;
		}
		x--;
		y--;
		while(x>=1&&flag[x][y]!=1&&num<=n*m){
			flag[x][y]=1;
			a[x][y]=num;
			num++;
			x--;
		}
		x++;
		y--;
		while(y>=1&&flag[x][y]!=1&&num<=n*m){
			flag[x][y]=1;
			a[x][y]=num;
			num++;
			y--;
		}
		y++;
		x++;
		while(x<=n&&flag[x][y]!=1&&num<=n*m){
			flag[x][y]=1;
			a[x][y]=num;
			num++;
			x++;
		}
		x--;
		y++;
		
	}
	for(int i=1;i<=m;++i){
		for(int j=1;j<=n;++j){
			printf("%5d",a[j][i]);
		}
		cout<<endl;
	}
	return 0;
}
0 回复 0 转发 0 喜欢 2 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!