數字的蛇形輸出(這個玩意兒,可是鑽研了兩天,真特麼的燒腦了!)

//數字的蛇形輸出
#include <iostream>
#define LEN 10
using namespace std;

typedef struct direct{
	int x;
	int y;
}direct;

enum mycase {_right, _left_down, _down, _right_up};

direct d[4] = {{0, 1}, {1, -1}, {1, 0}, {-1, 1}};

int main() {
	int a[LEN][LEN];
	int i, j, x, y, k, n, l;
	n = 0;
	x = 0;
	y = 0;
	for(i = 0, n = 0; i < LEN; i++) {
		for(j = 0; j < LEN; j++) {
			a[i][j] = -1;
		}
	}
	for(l = 1; l < 50; l++) {
		cout << "____________________________" << endl;
		n = 0;
		x = 0;
		y = 0;
		for(i = l; i >= 1;) {
			for(j = 0; i >= 1 && j < 4; j++) {
				switch(j) {
				case _right:
					a[x][y] = i--;
					x += d[j].x;
					y += d[j].y;
					break;
				case _left_down:
					for(n++, k = 0; i >= 1 && k < n; k++) {
						a[x][y] = i--;
						x += d[j].x;
						y += d[j].y;			
					}
					break;
				case _down:
					a[x][y] = i--;
					x += d[j].x;
					y += d[j].y;
					break;
				case _right_up:
					for(n++, k = 0; i >= 1 && k < n; k++) {
						a[x][y] = i--;
						x += d[j].x;
						y += d[j].y;			
					}
					break;	
				}
			}
		}
		for(i = 0; i < LEN; i++) {
			if(a[i][0] == -1) {
				break;
			}
			for(j = 0; j < LEN; j++) {
				if(a[i][j] == -1) {
					break;
				}
				cout << a[i][j] << " ";
			}
			cout << endl;
		}
	}
}

/*
____________________________
1 
____________________________
2 1 
____________________________
3 2 
1 
____________________________
4 3 
2 
1 
____________________________
5 4 
3 1 
2 
____________________________
6 5 1 
4 2 
3 
____________________________
7 6 2 1 
5 3 
4 
____________________________
8 7 3 2 
6 4 1 
5 
____________________________
9 8 4 3 
7 5 2 
6 1 
____________________________
10 9 5 4 
8 6 3 
7 2 
1 
____________________________
11 10 6 5 
9 7 4 
8 3 
2 
1 
____________________________
12 11 7 6 
10 8 5 
9 4 
3 1 
2 
____________________________
13 12 8 7 
11 9 6 
10 5 1 
4 2 
3 
____________________________
14 13 9 8 
12 10 7 1 
11 6 2 
5 3 
4 
____________________________
15 14 10 9 1 
13 11 8 2 
12 7 3 
6 4 
5 
____________________________
16 15 11 10 2 1 
14 12 9 3 
13 8 4 
7 5 
6 
____________________________
17 16 12 11 3 2 
15 13 10 4 1 
14 9 5 
8 6 
7 
____________________________
18 17 13 12 4 3 
16 14 11 5 2 
15 10 6 1 
9 7 
8 
____________________________
19 18 14 13 5 4 
17 15 12 6 3 
16 11 7 2 
10 8 1 
9 
____________________________
20 19 15 14 6 5 
18 16 13 7 4 
17 12 8 3 
11 9 2 
10 1 
____________________________
21 20 16 15 7 6 
19 17 14 8 5 
18 13 9 4 
12 10 3 
11 2 
1 
____________________________
22 21 17 16 8 7 
20 18 15 9 6 
19 14 10 5 
13 11 4 
12 3 
2 
1 
____________________________
23 22 18 17 9 8 
21 19 16 10 7 
20 15 11 6 
14 12 5 
13 4 
3 1 
2 
____________________________
24 23 19 18 10 9 
22 20 17 11 8 
21 16 12 7 
15 13 6 
14 5 1 
4 2 
3 
____________________________
25 24 20 19 11 10 
23 21 18 12 9 
22 17 13 8 
16 14 7 1 
15 6 2 
5 3 
4 
____________________________
26 25 21 20 12 11 
24 22 19 13 10 
23 18 14 9 1 
17 15 8 2 
16 7 3 
6 4 
5 
____________________________
27 26 22 21 13 12 
25 23 20 14 11 1 
24 19 15 10 2 
18 16 9 3 
17 8 4 
7 5 
6 
____________________________
28 27 23 22 14 13 1 
26 24 21 15 12 2 
25 20 16 11 3 
19 17 10 4 
18 9 5 
8 6 
7 
____________________________
29 28 24 23 15 14 2 1 
27 25 22 16 13 3 
26 21 17 12 4 
20 18 11 5 
19 10 6 
9 7 
8 
____________________________
30 29 25 24 16 15 3 2 
28 26 23 17 14 4 1 
27 22 18 13 5 
21 19 12 6 
20 11 7 
10 8 
9 
____________________________
31 30 26 25 17 16 4 3 
29 27 24 18 15 5 2 
28 23 19 14 6 1 
22 20 13 7 
21 12 8 
11 9 
10 
____________________________
32 31 27 26 18 17 5 4 
30 28 25 19 16 6 3 
29 24 20 15 7 2 
23 21 14 8 1 
22 13 9 
12 10 
11 
____________________________
33 32 28 27 19 18 6 5 
31 29 26 20 17 7 4 
30 25 21 16 8 3 
24 22 15 9 2 
23 14 10 1 
13 11 
12 
____________________________
34 33 29 28 20 19 7 6 
32 30 27 21 18 8 5 
31 26 22 17 9 4 
25 23 16 10 3 
24 15 11 2 
14 12 1 
13 
____________________________
35 34 30 29 21 20 8 7 
33 31 28 22 19 9 6 
32 27 23 18 10 5 
26 24 17 11 4 
25 16 12 3 
15 13 2 
14 1 
____________________________
36 35 31 30 22 21 9 8 
34 32 29 23 20 10 7 
33 28 24 19 11 6 
27 25 18 12 5 
26 17 13 4 
16 14 3 
15 2 
1 
____________________________
37 36 32 31 23 22 10 9 
35 33 30 24 21 11 8 
34 29 25 20 12 7 
28 26 19 13 6 
27 18 14 5 
17 15 4 
16 3 
2 
1 
____________________________
38 37 33 32 24 23 11 10 
36 34 31 25 22 12 9 
35 30 26 21 13 8 
29 27 20 14 7 
28 19 15 6 
18 16 5 
17 4 
3 1 
2 
____________________________
39 38 34 33 25 24 12 11 
37 35 32 26 23 13 10 
36 31 27 22 14 9 
30 28 21 15 8 
29 20 16 7 
19 17 6 
18 5 1 
4 2 
3 
____________________________
40 39 35 34 26 25 13 12 
38 36 33 27 24 14 11 
37 32 28 23 15 10 
31 29 22 16 9 
30 21 17 8 
20 18 7 1 
19 6 2 
5 3 
4 
____________________________
41 40 36 35 27 26 14 13 
39 37 34 28 25 15 12 
38 33 29 24 16 11 
32 30 23 17 10 
31 22 18 9 1 
21 19 8 2 
20 7 3 
6 4 
5 
____________________________
42 41 37 36 28 27 15 14 
40 38 35 29 26 16 13 
39 34 30 25 17 12 
33 31 24 18 11 1 
32 23 19 10 2 
22 20 9 3 
21 8 4 
7 5 
6 
____________________________
43 42 38 37 29 28 16 15 
41 39 36 30 27 17 14 
40 35 31 26 18 13 1 
34 32 25 19 12 2 
33 24 20 11 3 
23 21 10 4 
22 9 5 
8 6 
7 
____________________________
44 43 39 38 30 29 17 16 
42 40 37 31 28 18 15 1 
41 36 32 27 19 14 2 
35 33 26 20 13 3 
34 25 21 12 4 
24 22 11 5 
23 10 6 
9 7 
8 
____________________________
45 44 40 39 31 30 18 17 1 
43 41 38 32 29 19 16 2 
42 37 33 28 20 15 3 
36 34 27 21 14 4 
35 26 22 13 5 
25 23 12 6 
24 11 7 
10 8 
9 
____________________________
46 45 41 40 32 31 19 18 2 1 
44 42 39 33 30 20 17 3 
43 38 34 29 21 16 4 
37 35 28 22 15 5 
36 27 23 14 6 
26 24 13 7 
25 12 8 
11 9 
10 
____________________________
47 46 42 41 33 32 20 19 3 2 
45 43 40 34 31 21 18 4 1 
44 39 35 30 22 17 5 
38 36 29 23 16 6 
37 28 24 15 7 
27 25 14 8 
26 13 9 
12 10 
11 
____________________________
48 47 43 42 34 33 21 20 4 3 
46 44 41 35 32 22 19 5 2 
45 40 36 31 23 18 6 1 
39 37 30 24 17 7 
38 29 25 16 8 
28 26 15 9 
27 14 10 
13 11 
12 
____________________________
49 48 44 43 35 34 22 21 5 4 
47 45 42 36 33 23 20 6 3 
46 41 37 32 24 19 7 2 
40 38 31 25 18 8 1 
39 30 26 17 9 
29 27 16 10 
28 15 11 
14 12 
13 

*/

 

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