蛇形填數 nyoj

蛇形填數

時間限制:3000 ms  |  內存限制:65535 KB
難度:3
描述
在n*n方陳裏填入1,2,...,n*n,要求填成蛇形。例如n=4時方陳爲:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
輸入
直接輸入方陳的維數,即n的值。(n<=100)
輸出
輸出結果是蛇形方陳。
樣例輸入
3
樣例輸出
7 8 1
6 9 2
5 4 3
 
#include <stdio.h>
#define Max 100

int record[Max][Max];
void snake (int n);
int main (){

	int i, j, n;
	
	scanf("%d", &n);
	snake(n);

	for(i = 0; i < n; i++) {
		for(j = 0; j < n; j++) {
			printf("%d ", record[i][j]);
		}
		printf("\n");
	}
	
	return 0;
}

void snake(int n){

	int i = -1, j = n - 1, k;
	int num = 1;

	while (1) {
		
		for(k = 0; k < n; k++) {
			i++;
			record[i][j] = num;
			num++;
		}

		n -= 1;
		if(n <= 0)
			return ;
		
		for(k = 0; k < n; k++){
			j--;
			record[i][j] = num;
			num++;
		}

		for(k = 0; k < n; k++){
			i --;
			record[i][j] = num;
			num++;
		}

		n -= 1;
		if(n <= 0)
			return;

		for(k = 0; k < n; k++) {
			j++;
			record[i][j] = num;
			num++;
		}
	} 
}        


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