2 条题解

  • 0
    @ 2022-12-9 18:45:27

    基础模拟,的确是一堆if-else if嵌套,无技术含量

    #include <bits/stdc++.h>
    using namespace std;
    int n , posx , posy;
    int maze[40][40];
    int main()
    {
        cin >> n;
        posx = 1;
        posy = n / 2 + 1;
        maze[posx][posy] = 1;
        for (int i = 2 ; i <= n * n ; i++)
        {
            if (posx == 1 && posy != n)
            {
                maze[n][posy + 1] = i;
                posx = n;
                posy++;
            }
            else if (posy == n && posx != 1)
            {
                maze[posx - 1][1] = i;
                posx--;
                posy = 1;
            }
            else if (posx == 1 && posy == n)
            {
                maze[posx + 1][posy] = i;
                posx++;
            }
            else
            {
                if (maze[posx - 1][posy + 1] == 0)
                {
                    maze[posx - 1][posy + 1] = i;
                    posx--;
                    posy++;
                }
                else
                {
                    maze[posx + 1][posy] = i;
                    posx++;
                }
            }
        }
        for (int i = 1 ; i <= n ; i++)
        {
            for (int j = 1 ; j <= n ; j++)
            {
                cout << maze[i][j] << " ";
            }
            cout << endl;
        }
        return 0;
    }
    
    • 0
      @ 2022-6-13 17:47:28

      按照题目那44个要求模拟即可,a[1][n/2+1]=1;a[1][n / 2 + 1] = 1; 其余数字就是

      int i = 2; i <= n * n; i++
      

      用两个变量posx,posypos_x, pos_y记录上一个点的i,ji,j

      初始化posx=1,posy=n/2+1pos_x = 1, pos_y = n / 2 + 1

      然后就是一堆ifelse ifif-else\ if嵌套

      • 1

      [普及][NOIP2015 提高组] 神奇的幻方

      信息

      ID
      1408
      时间
      1000ms
      内存
      256MiB
      难度
      1
      标签
      递交数
      57
      已通过
      41
      上传者