n*n “之字形”方阵

题目描述:

给定一个正整数n,输出如下 n ´ n “之字形”方阵。

例: 8 ´ 8 方阵。 

n*n “之字形”方阵

 

 

选作:输入任意的两个正整数mn(m != n),构造m * n “之字形”矩阵,以下示例为3 * 5 矩阵:

n*n “之字形”方阵

只知道模拟。。。

n*n “之字形”方阵

 

 n*n “之字形”方阵

 

 

n*n “之字形”方阵
 1 #include <iostream>
 2 #include <iomanip>
 3 
 4 using namespace std;
 5 
 6 int arr[100][100] = { 0 };
 7 
 8 void Function(int n,int m) {
 9     int i = 0, j = 0,sign = 1;
10     int num = 1;
11     arr[0][0] = num;
12     while (num++ < n * m) {
13         if (i == 0 && j < m - 1 && sign != 4) {        // 右边
14             j++;
15             arr[i][j] = num;
16             sign = 4;
17             continue;
18         }
19         else if (j == m - 1 && sign != 4) {            // 右边
20             i++;
21             arr[i][j] = num;
22             sign = 4;
23             continue;
24         }
25 
26         if (i < n - 1 && j == 0 && sign != 3 ) {    // 左边
27             i++;
28             arr[i][j] = num;
29             sign = 3;
30             continue;
31         }
32         else if (i == n - 1 && sign != 3 ) {        // 下边
33             j++;
34             arr[i][j] = num;
35             sign = 3;
36             continue;
37         }
38         if (sign == 3) {        // 下到上
39             i--;
40             j++;
41             arr[i][j] = num;
42             continue;
43         }
44         if (sign == 4) {        // 上到下
45             i++;
46             j--;
47             arr[i][j] = num;
48             continue;
49         }
50     }
51 }
52 
53 void Print(int n, int m) {
54     for (int i = 0; i < n; i++) {
55         for (int j = 0; j < m; j++)
56             cout << setw(5) << arr[i][j];
57         cout << endl << endl;
58     }
59 }
60 
61 int main()
62 {
63     int n, m;
64     cin >> n >> m;
65     Function(n, m);
66     Print(n, m);
67     return 0;
68 }
View Code

2021-04-30

上一篇:[De1CTF 2019]SSRF Me


下一篇:C++学习第一篇 ---类