「已注销」 2023-03-02 20:18 采纳率: 0%
浏览 39

C++贪吃蛇矩阵求解!(请仔细阅读!)

(C++题目)
题目描述:
在数字矩阵中,存在着一种名叫贪吃蛇矩阵的结构,它的原理是这样的:矩阵固定从最左上角开始且一定为1,依次向后赋值,每一次赋值的数都比上一次多1。当前行赋值完毕以后,反向顺序赋值下一行,重复这个步骤,直到矩阵赋值完成。此时的矩阵称为贪吃蛇矩阵。现请你设计一个程序,输入贪吃蛇矩阵的长和宽,输出这个贪吃蛇矩阵。

输入描述
1行,包含2个数n,m,代表贪吃蛇矩阵的长和宽。

输出描述
n行,每行包含m个数,代表贪吃蛇矩阵中的每一个数。

输入样例:
3 3
输出
1 2 3
6 5 4
提示
对于100%的数据,3<=n,m<=50。

运用知识点:二维数组
求本题中输出的思路!
(此题和网上的贪吃蛇矩阵不太一样,网上的是(螺旋矩阵):
1 2 3
8 9 4
7 6 5
而本题是(贪吃蛇(叠加S形)矩阵:
1 2 3
6 5 4
7 8 9

本人只能编到这里了:

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n,m;
    cin >> n >> m;
    int ans = 1,cnt = 0;
    int a[n][m];
    for (int i = 0;i < n;i++)
    {
        for (int j = 0;j < m;j++)
        {
            if(cnt == n || cnt == m)
            {
                break;
            }
            a[i][j] = ans;
            ans++;
            cnt++;
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}

(编辑器:Dev-C++ 5.11)

  • 写回答

3条回答 默认 最新

  • 优美的大乔 2023-03-03 21:49
    关注

    你可以设一个k,如果是单数行那么k=1,如果是单数行那么k=-1,然后每次让横坐标加k。
    代码:

    #include <bits/stdc++.h>
    using namespace std;
    int k=1,x,n,m,s=1,a[1000][1000];
    int main() {
      cin>>n>>m;
      for(int i=1; i<=n; i++) {
        for(int j=1; j<=m; j++) {
          x+=k;
          a[i][x]=s;
          s++;
        }
        x+=k;
        k*=-1;//单数为1,双数为-1
      }
      for(int i=1; i<=n; i++) {
        for(int j=1; j<=m; j++)cout<<a[i][j]<<" ";
        cout<<endl;
      }
      return 0;
    }
    

    可能有点复杂,但还是求题主点个采纳+关注~

    评论

报告相同问题?

问题事件

  • 创建了问题 3月2日

悬赏问题

  • ¥15 学习Python如何找兼职
  • ¥15 python结合Matlab仿真忆阻器
  • ¥35 有人会注册whatsaop协议号吗?
  • ¥15 lead dbs 无法导入影像数据
  • ¥15 多目标MPA算法优化编程实现
  • ¥15 反激PWM控制芯片调研
  • ¥15 Python for loop减少运行时间
  • ¥15 fluent模拟物质浓度udf
  • ¥15 Collection contains no element matching the predicate
  • ¥20 冻品电商平台的搜索是怎么实现的