-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmatrix_snake.cpp
59 lines (49 loc) · 1.11 KB
/
matrix_snake.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// http://oj.ryipedu.com/problem.php?id=1245
// 打印蛇形矩阵 (样例显示其实是一个回形矩阵、环形矩阵)
#include <iostream>
#include <iomanip>
using namespace std;
const int N = 100;
int a[N][N];
int main()
{
int n; // 矩阵的维度
cin >> n;
int index, // 每个格子的编号
i, // 行号
j; // 列号
i = j = 0;
index = 1;
// 模拟回形矩阵的生成过程
while (index <= n*n)
{
// 从左到右生成一行
while(a[i][j] == 0 && j < n)
a[i][j++] = index++;
i++; // 下移一行
j--; // 回退一格
// 从上到下生成一列
while (a[i][j] == 0 && i < n)
a[i++][j] = index++;
i--;
j--;
// 从右到左生成一行
while(a[i][j] == 0 && j >= 0)
a[i][j--] = index++;
i--;
j++;
// 从下到上生成一列
while(a[i][j] == 0 && i >= 0)
a[i--][j] = index++;
i++;
j++;
}
// 输出矩阵
for (i = 0; i < n; i++) {
for (j = 0; j < n;j++){
cout <<setw(3)<< a[i][j] << " ";
}
cout << endl;
}
return 0;
}