题目描述:
给定一个正整数n,输出如下 n ´ n “之字形”方阵。
例: 8 ´ 8 方阵。
选作:输入任意的两个正整数m 和n(m != n),构造m * n “之字形”矩阵,以下示例为3 * 5 矩阵:
只知道模拟。。。
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 }
2021-04-30