薛赤赤 2019-05-29 20:12 采纳率: 33.3%
浏览 256

求大佬解答一下,这个怎么做,c,c++,Java都行

有一个正方体神坛,由 N * N 个方格构成,每个方格可以填入一个数字。只有正确填写所有方格,你才可以升天成神。

现在给你1,2,3,,,N * N,一共 N * N 个数。神坛右上角的方格已经填入了数字 1 。

现在你要以此 1 为起点,顺时针螺旋并按照从大到小的顺序填入这 N * N 个数。输出格式如样例所示。

例如:

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。

输出
输出构成的神坛。

输入样例 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

  • 写回答

1条回答

  • fengenrong 2024-02-02 17:23
    关注

    这个代码是c++的

    #include<bits/stdc++.h>
    #define int long long
    using namespace std;
    int n;
    int ans[1005][1005];//记录答案 
    bool bj[1005][1005];//用来标记该点是否能走 
    signed main(){
        scanf("%lld",&n);
        for(int i=1;i<=n;i++) bj[0][i]=bj[i][0]=bj[n+1][i]=bj[i][n+1]=1;//把周围标位不能走 
        int x=1,y=n,sum=1;//x,y分别表示当前的位置,sum表示这个位置的值 
        string fx="down";//记录该怎么走 
        while(sum<=n*n){
            ans[x][y]=sum;//记录答案 
            bj[x][y]=1;//走过了,就不能再走 
            if(fx=="down"){//向下 
                x++;
                if(bj[x][y]){//不能再走 
                    x--;
                    y--;
                    fx="left";//换方向 
                }
            }
            else if(fx=="left"){//向左
                y--;
                if(bj[x][y]){//不能再走 
                    y++;
                    x--;
                    fx="up";//换方向 
                }
            }
            else if(fx=="up"){//向上 
                x--;
                if(bj[x][y]){//不能再走 
                    y++;
                    x++;
                    fx="right";//换方向 
                }
            }
            else{//向右 
                y++;
                if(bj[x][y]){//不能再走 
                    y--;
                    x++;
                    fx="down";//换方向 
                }
            }
            sum++;
        }
        //输出答案 
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++) printf("%lld ",ans[i][j]);
            puts("");//换行 
        }
        return 0;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿