杨嘉琪


私信TA

用户名:dotcpp0664564

访问量:1443

签 名:

等  级
排  名 657
经  验 4028
参赛次数 1
文章发表 21
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

1755: 姓名排序
浏览:22

解题思路:

输出的数重置为0,遇到0则跳过

分四种情况
参考了一位大佬思路
注意事项:


参考代码:

#include<iostream>

int a[100][100]={0};

int main()

{

int r,c;

scanf("%d %d",&r,&c);

int i,j;

//输入 ,从1开始

for(i=1;i<=r;i++){

for(j=1;j<=c;j++){

scanf("%d",&a[i][j]);

}

}

//set标记四种情况,行和列 

int set=1,h=1,l=1;

for(i=1;i<=r*c;i++){

//set1    左→右 

if(set==1){

printf("%d\n",a[h][l]);

a[h][l]=0;

if(a[h][l+1]==0){

set=2;

h++;

continue;

}else{

l++;

set=1;

continue;

}

}

//set2 右上→右下 

if(set==2){

printf("%d\n",a[h][l]);

a[h][l]=0;

if(a[h+1][l]==0){

set=3;

l--;

continue;

}else{

h++;

set=2;

continue;

}

}

//set3 右下→左下 

if(set==3){

printf("%d\n",a[h][l]);

a[h][l]=0;

if(a[h][l-1]==0){

set=4;

h--;

continue;

}else{

l--;

set=3;

continue;

}

}

//set4 左下→左上 

if(set==4){

printf("%d\n",a[h][l]);

a[h][l]=0;

if(a[h-1][l]==0){

set=1;

l++;

continue;

}else{

set=4;

h--;

continue;

}

}

}


 } 


 

0.0分

1 人评分

  评论区

这种办法有一个问题,如果原来的数就是0该怎么办
2023-11-24 01:43:25
  • «
  • 1
  • »