Zff121017 2024-06-05 16:21 采纳率: 60%
浏览 31
已结题

二维数组基本练习——蛇形填数C++04

二维数组基本练习——蛇形填数C++
不会
有代码最好(记得写题号)
题目1描述
在nn方阵里填入1,2,3,…,nn,要求填成蛇形。例如n=5时方阵为:
5 4 3 2 1
6 19 18 17 16
7 20 25 24 15
8 21 22 23 14
9 10 11 12 13

输入
一行 n(n<=8)
输出
蛇形填数矩阵
样例输入 复制
5
样例输出 复制
5 4 3 2 1
6 19 18 17 16
7 20 25 24 15
8 21 22 23 14
9 10 11 12 13

题目2描述
在nn方阵里填入1,2,3,…,nn,要求填成蛇形。例如n=5时方阵为:
1 2 3 4 5
2 3 4 5 1
3 4 5 1 2
4 5 1 2 3
5 1 2 3 4

输入
一行n(n<=8)
输出
蛇形填数矩阵
样例输入 复制
5
样例输出 复制
1 2 3 4 5
2 3 4 5 1
3 4 5 1 2
4 5 1 2 3
5 1 2 3 4

  • 写回答

3条回答 默认 最新

  • 为荣誉而拼搏少年 2024-06-05 20:24
    关注

    1.

    #include<bits/stdc++.h>
    using namespace std;
    int a[1000][1000],n,i,j,l,dx[]={0,1,0,-1},dy[]={-1,0,1,0};
    int main()
    {
        cin>>n;
        memset(a,-1,sizeof(a));
        for(i=1;i<=n;i++)for(j=1;j<=n;j++)a[i][j]=0;
        i=1;
        j=n;
        l=0;
        for(int k=1;k<=n*n;k++)
        {
            a[i][j]=k;
            if(a[i+dx[l]][j+dy[l]]!=0)l=(++l)%4;
            i+=dx[l];
            j+=dy[l];
        }
        for(i=1;i<=n;i++)
        {
            for(j=1;j<=n;j++)cout<<a[i][j]<<" ";
            cout<<endl;
        }
    }
    

    2.

    #include<bits/stdc++.h>
    using namespace std;
    int n;
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)cout<<i+j-1<<" ";
            cout<<endl;
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月17日
  • 已采纳回答 6月9日
  • 创建了问题 6月5日