社区讨论

求大佬

P5731【深基5.习6】蛇形方阵参与者 4已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@m3n7vfz9
此快照首次捕获于
2024/11/19 00:05
去年
此快照最后确认于
2025/11/04 14:26
4 个月前
查看原帖
大佬为什么明明有右边数字如果不为零的情况下就向下转弯的判断,但是他为啥还是往一个方向走,而且所有转弯的if判断只执行了一次,第二次明明也是一样的条件但是不执行了
CPP
#include<iostream>
#include<cstdio>
using namespace std;
int a[20][20]={0};
int main()
{
    int i=1,j=1,k,n,c=1;
    cin >> n;
    for(k=1;k<=n*n;k++)
    {
     a[i][j]=k;
     if(c==1)//向右
     {
      if(j>=n||a[i][j+1])//当运行到最右边,或者右边数字不为零时变向
      {
       c++;
       i++;
       continue;
      }
      else 
      {
       j++;
       
      }
     }
     if(c==2)//向下
     {
      if(i==n||a[i+1][j]!=0)//当运行到最下边,或者下边数字不为零时变向
      {
       c++;
       j--;
       continue;
      }
      else
      {
        i++;
        
      }
     }
     if(c==3)//向左
     {
      if(j==1||a[i][j-1]!=0)//当运行到最左边,或者左边数字不为零时变向
      {
       c++;
       i--;
       continue;
      }
      else 
      {
       j--;
      }
     }
     if(c==4)//向上
     {
      if(a[i-1][j]!=0)//当运行到上边数字不为零时变向
      {
       c==1;
       j++;
       continue;
      }
      else
      i--;
     }
    }
    for(i=1;i<=n;i++)
    {
     for(j=1;j<=n;j++)
     {
      printf("%3d",a[i][j]);
     }
     cout <<endl;
    }
    return 0;
}

回复

6 条回复,欢迎继续交流。

正在加载回复...