鱼C论坛

 找回密码
 立即注册
查看: 1891|回复: 2

[已解决]牛客蛇形矩阵

[复制链接]
发表于 2023-10-9 20:29:27 | 显示全部楼层
这是一个蛇形矩阵的生成程序,但是在数字到达10的时候就出现了问题,因为此时应该往左走而不是往上走。可以通过修改循环的条件来解决这个问题。以下是修改后的代码:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int a[1001][1001];
  4. int main()
  5. {
  6.     int n,k=1,looper,x=0,y=0,num=1,tol=0;;
  7.     cin>>n;
  8.     looper =n*n;
  9.     a[0][0]=1;
  10.     while(num<=looper)
  11.     {
  12.         num++;
  13.         y++;
  14.         tol++;
  15.         a[x][y]=num;
  16.         for(int i=0;i<tol-1;i++) // 修改循环条件
  17.         {
  18.             num++;
  19.             x++;
  20.             y--;
  21.             a[x][y]=num;
  22.         }
  23.         if(num > looper) break; // 添加判断条件
  24.         num++;
  25.         x++;
  26.         tol++;
  27.         a[x][y]=num;
  28.         for(int i=0;i<tol-1;i++)
  29.         {
  30.             num++;
  31.             x--;
  32.             y++;
  33.             a[x][y]=num;
  34.         }
  35.     }
  36.     for(int i=0;i<n;i++)
  37.     {
  38.         for(int j=0;j<n;j++)
  39.         {
  40.             cout<<a[ i][j]<<" ";
  41.         }
  42.         cout<<endl;
  43.     }
  44. }
复制代码


修改后的程序中,第一个for循环的条件变成了 for(int i=0;i<tol-1;i++) ,这是因为在第一次循环时已经将y加了1,所以后面的循环次数要减1。同时,在第二个for循环前添加了一个判断条件 if(num > looper) break; ,用来判断是否已经生成完整个矩阵,如果已经生成完毕,则跳出循环。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-7 03:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表