涵盖偷鸡与常规

#include<bits/stdc++.h>
#include<stdio.h>
#include<stdlib.h>
#define ll long long 
using namespace std;
int n,k=1,x=1,y=0,a[10000][10000];
int main(){
//这题的数据范围实在是太小了,
//手算完全不费事,
//直接在草稿纸上模拟一下填表的过程,
//过了几分钟,代码就出炉啦
//	if(n == 1)
//		cout << "  1\n";
//	if(n == 2)
//		cout <<"  1  2\n  4  3\n";
//	if(n == 3) {
//		cout << "  1  2  3\n";
//		cout << "  8  9  4\n";
//		cout << "  7  6  5\n";
//	}
//	if(n == 4) {
//		cout << "  1  2  3  4\n";
//		cout << " 12 13 14  5\n";
//		cout << " 11 15 16  6\n";
//		cout << " 10  9  8  7\n";
//	}
//	if(n == 5) {
//		cout << "  1  2  3  4  5\n";
//		cout << " 16 17 18 19  6\n";
//		cout << " 15 24 25 20  7\n";
//		cout << " 14 23 22 21  8\n";
//		cout << " 13 12 11 10  9\n";
//	}
//	if(n == 6) {
//		cout << "  1  2  3  4  5  6\n";
//		cout << " 20 21 22 23 24  7\n";
//		cout << " 19 32 33 34 25  8\n" ;
//		cout << " 18 31 36 35 26  9\n";
//		cout << " 17 30 29 28 27 10\n";
//		cout << " 16 15 14 13 12 11\n";
//	}
//	if(n == 7) {
//		cout << "  1  2  3  4  5  6  7\n";
//		cout << " 24 25 26 27 28 29  8\n";
//		cout << " 23 40 41 42 43 30  9\n";
//		cout << " 22 39 48 49 44 31 10\n";
//		cout << " 21 38 47 46 45 32 11\n";
//		cout << " 20 37 36 35 34 33 12\n";
//		cout << " 19 18 17 16 15 14 13\n";
//	}
//	if(n == 8) {
//		cout << "  1  2  3  4  5  6  7  8\n";
//		cout << " 28 29 30 31 32 33 34  9\n";
//		cout << " 27 48 49 50 51 52 35 10\n";
//		cout << " 26 47 60 61 62 53 36 11\n";
//		cout << " 25 46 59 64 63 54 37 12\n";
//		cout << " 24 45 58 57 56 55 38 13\n";
//		cout << " 23 44 43 42 41 40 39 14\n";
//		cout << " 22 21 20 19 18 17 16 15\n";
//	}
//	if(n == 9) {
//		cout << "  1  2  3  4  5  6  7  8  9\n";
//		cout << " 32 33 34 35 36 37 38 39 10\n";
//		cout << " 31 56 57 58 59 60 61 40 11\n";
//		cout << " 30 55 72 73 74 75 62 41 12\n";
//		cout << " 29 54 71 80 81 76 63 42 13\n";
//		cout << " 28 53 70 79 78 77 64 43 14\n";
//		cout << " 27 52 69 68 67 66 65 44 15\n";
//		cout << " 26 51 50 49 48 47 46 45 16\n";
//		cout << " 25 24 23 22 21 20 19 18 17\n";
//	}

	cin>>n;
	while (k<=n*n){
		while(y<n&&!a[x][y+1]){
			a[x][++y]=k++;
		}
		while(x<n&&!a[x+1][y]){
			a[++x][y]=k++;	
		}
		while(y>1&&!a[x][y-1]){
			a[x][--y]=k++;	
		}
		while(x>1&&!a[x-1][y]){
			a[--x][y]=k++;
		}
	}
	for (int i=1;i<=n;i++){
		for (int j=1;j<=n;j++){
			printf("%3d",a[i][j]);
		}
		printf("\n");	
	}

return 0;
}

0 comments

No comments so far...