一代诗圣 2023-06-10 11:58 采纳率: 66.7%
浏览 21
已结题

如何调换二维数组顺序

题目描述
在n×n的方阵中填入1、2、3、……、n×n(n<50),形成如下的蛇形方阵。例如: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
输出
n×n的蛇形方阵。(每一行数字之间一个空格隔开)

我编出来的代码如下:

#include<bits/stdc++.h>
using namespace std;
const int mxn = 105;
int a[mxn][mxn]; 
int main()
{
    int n, s = 1;
    cin >> n;
    int x = 1, y = 1;
    memset(a, 0, sizeof(a));
    a[x][y] = s;
    while(s < n * n)
    {
        while(((y + 1) <= n) && (a[x][y + 1] == 0))
        {
            y++;
            s++;
            a[x][y] = s;
        }
        while(((x + 1) <= n) && (a[x + 1][y] == 0))
        {
            x++;
            s++;
            a[x][y] = s;
        }
        while(((y - 1) >= 1) && (a[x][y - 1] == 0))
        {
            y--;
            s++;
            a[x][y] = s;
        }
        while(((x - 1) >= 1) && (a[x - 1][y] == 0))
        {
            x--;
            s++;
            a[x][y] = s;
        }
    }
    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= n; j++)
        {
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
} 

代码输出如下:

5
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9

请问各位朋友谁可以帮我找出我代码中哪里错了?
感谢!

  • 写回答

1条回答 默认 最新

  • 今夕何夕2112 2023-06-10 12:25
    关注

    int x=1, y=n;
    // 从第一行第n列开始填1

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月10日
  • 创建了问题 6月10日

悬赏问题

  • ¥50 matlab代码修改
  • ¥15 有没有下面符合以下条件的电子时钟的代码
  • ¥15 LMV844QMAX/NOPB(IS)问题判定
  • ¥15 主成分分析中的原始数据矩阵行列分别代表什么
  • ¥20 PVE虚拟机运行不流畅,出现卡顿
  • ¥15 使用stata进行网状meta分析时遇到的问题
  • ¥15 ffmpeg音视频同步
  • ¥20 Ubuntu18.04卸载Python2后无可视化界面问题
  • ¥15 php同一个单元格里多选提交,更新表格
  • ¥15 Vue 前端调用本地jar包有什么方法?