蛇形填數—C++詳解

題目描述:

在n*n方陣裏填入1,2,...,n*n,要求填成蛇形。例如n=4時方陣爲:
10    11    12    1
9      16    13    2
8      15    14    3
7       6      5     4

代碼如下:

#include<cstdio>
#include<cstring>
using namespace std;
#define MAXN 100+1				//最大填100*100的方陣且下標從1開始 
int map[MAXN][MAXN];
int main()
{
	int x=1,y,n,number=1;
	scanf("%d",&n);
	y=n;
	memset(map,0,sizeof(map));		//清零方陣同時做訪問標記 
	while(number<=n*n)
	{
		while(x!=n+1&&!map[x][y])	//循環結束時x已出界 	由上到下 
			map[x++][y]=number++;
		--x;						
		--y;
		while(y!=0&&!map[x][y])		//循環結束時y已出界 	由右到左 
			map[x][y--]=number++;
		++y;
		--x;
		while(x!=0&&!map[x][y])		//循環結束時x已出界	由下到上 
			map[x--][y]=number++;
		++x;
		++y;
		while(y!=n+1&&!map[x][y])	//循環結束時y已出界	由左到右 
			map[x][y++]=number++;
		--y;
		++x;
	}
	for(int i=1;i<=n;++i)
	{
		for(int j=1;j<=n;++j)
		{
			printf("%-6d",map[i][j]);
		}
		printf("\n");
	}
	return 0;
}

運行結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章