诗者才子酒中仙 2023-10-19 21:19 采纳率: 58.8%
浏览 10

C++ 方阵填数省试题

在一个NN的方阵中,填入1,2,……NN个数,并要求构成如下的格式:

例如:

N=5

13 14 15 16 1

12 23 24 17 2

11 22 25 18 3

10 21 20 19 4

9 8 7 6 5

N=6

16 17 18 19 20 1

15 30 31 32 21 2

14 29 36 33 22 3

13 28 35 34 23 4

12 27 26 25 24 5

11 10 9 8 7 6

输入格式

每个测试文件只包含一组测试数据,每组输入一个N。

输出格式

输出构成的方阵。

输入输出样例

输入样例#1
5
输出样例#1
13 14 15 16 1
12 23 24 17 2
11 22 25 18 3
10 21 20 19 4
9 8 7 6 5
说明/提示

6


16 17 18 19 20 1
15 30 31 32 21 2
14 29 36 33 22 3
13 28 35 34 23 4
12 27 26 25 24 5
11 10 9 8 7 6

  • 写回答

2条回答 默认 最新

  • 想要AC的dly 2023-10-19 21:27
    关注
    #include <iostream>
    #include <vector>
    using namespace std;
    
    int main() {
        int N;
        cin >> N;  // 从标准输入中读取N
    
        vector<vector<int>> matrix(N, vector<int>(N));
    
        int num = 1;
        int start_row = 0, end_row = N - 1, start_col = 0, end_col = N - 1;
    
        while (num <= N * N) {
            // 从上到下
            for (int i = start_row; i <= end_row; ++i) {
                matrix[i][end_col] = num;
                num++;
            }
            end_col--;
    
            // 从右到左
            for (int i = end_col; i >= start_col; --i) {
                matrix[end_row][i] = num;
                num++;
            }
            end_row--;
    
            // 从下到上
            for (int i = end_row; i >= start_row; --i) {
                matrix[i][start_col] = num;
                num++;
            }
            start_col++;
    
            // 从左到右
            for (int i = start_col; i <= end_col; ++i) {
                matrix[start_row][i] = num;
                num++;
            }
            start_row++;
        }
    
        // 输出生成的方阵
        for (int i = 0; i < N; ++i) {
            for (int j = 0; j < N; ++j) {
                cout << matrix[i][j];
                if (j < N - 1) {
                    cout << " ";
                }
            }
            cout << endl;
        }
    
        return 0;
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 10月19日

悬赏问题

  • ¥15 爬取网页内容并保存需要完整的python代码
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?
  • ¥15 铜与钢双金属板叠加在一起每种材料300mm长,18mm宽,4mm厚一端固定并加热至80℃,当加热端温度保持不变时另一端的稳态温度。ansys
  • ¥15 django5安装失败
  • ¥15 Java与Hbase相关问题
  • ¥15 后缀 crn 游戏文件提取资源
  • ¥15 ANSYS分析简单钎焊问题
  • ¥20 bash代码推送不上去 git fetch origin master #失败了