crlmax 2020-06-21 11:56 采纳率: 75%
浏览 97
已采纳

这题怎么做啊?求C++代码

螺旋矩阵 3

【题目背景】

一个 n 行 n 列的螺旋矩阵可由如图所示的方法生成,观察图片,找出填数规律。填 数规则为从 1 开始填到 n×n。

1 2 6 7 15 16 28 29

3 5 8 14 17 27 30 43

4 9 13 18 26 31 42 44

10 12 19 25 32 41 45 54

11 20 24 33 40 46 53 55

21 23 34 39 47 52 56 61

22 35 38 48 51 57 60 62

36 37 49 50 58 59 63 64

现在给出矩阵大小 n 以及 i 和 j,请你求出该矩阵中第 i 行第 j 列的数是多少。

【输入格式】

从标准输入读入数据。 共一行,包含三个整数 n(1≤n≤1,000)、i(1≤i≤n)、j(1≤ j≤n),每两个整 数之间用一个空格隔开,分别表示矩阵大小、待求的数所在的行号和列号。

【输出格式】

输出到标准输出。 一个整数,表示相应矩阵中第 i 行第 j 列的数。

【样例 1 输入】

8 2 8

【样例 1 输出】

43

【子任务】

• 对于 30% 的测试数据,n≤10;

• 对于 60% 的测试数据,n≤100;

• 对于 100% 的测试数据,n≤1,000;

• 特别地,对于 20% 的测试数据,i = j = 1。

求C++代码,在线等

另外,我用人格担保,回答了正确了肯定是要采纳的

各位大佬求救救

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-06-21 14:01
    关注
    #include <iostream>
    using namespace std;
    
    int main()
    {
        int n, ii, jj;
        cin >> n >> ii >> jj;
        ii--;
        jj--;
        int *p = new int[n * n];
        int d = 0;
        int i = 0;
        int j = 0;
        for (int x = 1; x <= n * n; x++)
        {
            if (i == ii && j == jj) { cout << x; break; }
            p[i * n + j] = x;
            if (d == 0 && (i == 0 && j != n - 1))
            {
                j = j + 1;
                d = 1;
            }
            else if (d == 0 && j == n - 1)
            {
                i = i + 1;
                d = 1;
            }
            else if (d == 1 && (j == 0 && i != n - 1))
            {
                i = i + 1;
                d = 0;
            }
            else if (d == 1 && i == n - 1)
            {
                j = j + 1;
                d = 0;
            }
            else if (d == 0)
            {
                i--;
                j++;
            }
            else
            {
                i++;
                j--;
            }
        }
        //for (int i = 0; i < n; i++)
        //{
        //  for (int j = 0; j < n; j++)
        //  {
        //      cout << p[i * n + j] << " ";
        //  }
        //  cout << endl;
        //}
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题