5 条题解

  • 3
    @ 2023-9-6 20:51:26

    python解法,思维比较简单,代码也简单

    O(n2)O(n^2)的复杂度,能过单纯因为数据点太弱

    from typing import List
    
    n: int = int(input())
    a: List[List[int]] = [[0] * n for _ in range(n)]
    h: int = 0
    l: int = n // 2
    
    for i in range(1, n * n + 1):
        a[h][l] = i
        h = (h - 1) % n
        l = (l - 1) % n
        if i % n == 0:
            h = (h + 2) % n
            l = (l + 1) % n
    
    for row in a: print(*row)
    
    • @ 2023-9-8 18:15:59

      C++

      #include <iostream>
      #include <vector>
      using namespace std;
       int main() {
          int n;
          cin >> n;
          vector<vector<int>> a(n, vector<int>(n, 0));
          int h = 0, l = n / 2;
           for (int i = 1; i <= n * n; i++) {
              a[h][l] = i;
              h = (h - 1 + n) % n;
              l = (l - 1 + n) % n;
               if (i % n == 0) {
                  h = (h + 2) % n;
                  l = (l + 1) % n;
              }
          }
           for (const auto& row : a) {
              for (int num : row) {
                  cout << num << " ";
              }
              cout << endl;
          }
           return 0;
      }
      
  • 3
    @ 2021-5-24 13:42:59

    C++ :

    #include <iostream>
    #include <cstdio>
    #define Maxn 19
    using namespace std;
    int a[Maxn][Maxn];
    int main()
    {
        int n;
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                a[i][j]=0;
            }
        }
        a[1][n/2+1]=1;
        for(int i=2;i<=n*n;i++){
            int x=0,y=0;
            for(int j=1;j<=n;j++){
                for(int k=1;k<=n;k++){
                    if(a[j][k]==i-1){
                        x=j;
                        y=k;
                    }
                }
            }
        if(x-1>0 && y-1>0){
          if(a[x-1][y-1]>0){
             a[x+1][y]=i;
           }
          if(a[x-1][y-1]==0){
             a[x-1][y-1]=i;
          }
        }
        if(x-1==0 && y-1!=0){
            if(a[n][y-1]!=0){
                a[x+1][y]=i;
            }
            if(a[n][y-1]==0){
                a[n][y-1]=i;
            }
            }
        if(x-1!=0 && y-1==0){
             if(a[x-1][n]!=0){
                a[x+1][y]=i;
            }
            if(a[x-1][n]==0){
                a[x-1][n]=i;
            }
           }
        if(x-1==0 && y-1==0){
            if(a[n][n]!=0){
                a[x+1][y]=i;
            }
            if(a[n][n]==0){
                a[n][n]=i;
            }
            }
        }
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                printf("%d ",a[i][j]);
            }
            printf("\n");
        }
    
    
        return 0;
    }
    
    • -1
      @ 2023-7-20 8:02:54

      #include

      using namespace std; const int Maxn=55; int a[Maxn][Maxn]; int main() { int n; cin>>n; a[1][(n+1)/2]=1; int x=1; int y=(n+1)/2; for(int i=2;i<=n*n;i++) { if(x!=1&&y!=1){ if(a[x-1][y-1]0){x--;y--;a[x][y]=i;continue;} else {x++;a[x][y]=i;continue;} } if(x1){ if(y!=1) { if(a[n][y-1]==0) { x=n; y--; a[x][y]=i; continue; } else { x++; a[x][y]=i; continue; } } else { x++; a[x][y]=i; continue; }

      }
          if(y==1){
              if(x!=1)
              {
                  if(a[x-1][n]==0)
                  {
                      x--;
                      y=n;
                      a[x][y]=i;
                      continue;
                  }
                  else
                  {
                      x++;
                      a[x][y]=i;
                      continue;
                  }
              }
          }
      }
      
      
      for(int i=1;i<=n;i++)
      {
          for(int j=1;j<=n;j++)
          {
              cout<<a[i][j]<<" ";
          }
          cout<<endl;
      }
      return 0;
      

      }

      • -3
        @ 2023-7-20 8:04:00

        就是一点实力都没有

        • -9
          @ 2023-7-18 19:31:45

          可爱学妹(Rei)就是逊啦,只有80分。😄

          #define Maxn 19 using namespace std; int a[100][100]; int main() { int n,k1=0,k2=0,k3=0; scanf("%d",&n); for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ a[i][j]=0; } } a[1][n/2+1]=1; for(int i=2;i<=n*n;i++){ int x=0,y=0; for(int j=1;j<=n;j++){ for(int k=1;k<=n;k++){ if(a[j][k]==i-1){ x=j; y=k; } } } if(x-1>0 && y-1>0){ if(a[x-1][y-1]>0){ a[x+1][y]=i; } if(a[x-1][y-1]0){ a[x-1][y-1]=i; } } if(x-10 && y-1!=0){ for(int l=i; l>0; l--){ if(a[n][y-1]==l){k1=k1+1;} } if(k1!=0){ a[x+1][y]=i; } if(a[n][y-1]0){ a[n][y-1]=i; } } if(x-1!=0 && y-10){ for(int l=i; l>0; l--){ if(a[x-1][n]l){k2=k2+1;} } if(k2!=0){ a[x+1][y]=i; } if(a[x-1][n]0){ a[x-1][n]=i; } } if(x-10 && y-10){ for(int l=i; l>0; l--){ if(a[n][n]==l){k3=k3+1;} } if(k3!=0){ a[x+1][y]=i; } if(a[n][n]==0){ a[n][n]=i; } } } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ printf("%d ",a[i][j]); } printf("\n"); } return 0; }

          • @ 2023-7-18 19:43:14

            注意分行

          • @ 2023-7-25 15:06:02

            你是懂题解的

          • @ 2023-7-27 10:05:16

            你是懂题解的

          • @ 2023-9-6 20:49:53

            你是懂MD

          • @ 2023-9-6 20:50:05

            你是懂题解的

          • @ 2023-9-6 20:54:41

            你是懂题解的

          • @ 2023-9-6 20:57:29

            您怎么知道可爱学妹(Rei)只有80分,不会热衷于抄题解吧

          • @ 2023-9-6 20:58:24

            你是懂题解的

        • 1

        信息

        ID
        93
        时间
        1000ms
        内存
        128MiB
        难度
        5
        标签
        递交数
        195
        已通过
        73
        上传者