请求神犇救救孩子WA的题吧
  • 板块P1683 入门
  • 楼主Maple_plain
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/8/20 10:22
  • 上次更新2023/10/27 14:29:38
查看原帖
请求神犇救救孩子WA的题吧
663435
Maple_plain楼主2022/8/20 10:22

请求神犇帮忙改进一下15、16行的for循环语句,蒟蒻无能为力了QwQ(手动乖巧)

#include<bits/stdc++.h>
using namespace std;
int W,H;//H行,W列 
char s[21][21];//小路 
int total=0,fi,fj;//total计数器,fi,fj记录当前位置 
int main()
{
	scanf("%d%d",&W,&H);//输入W,H 
	for(int i=1;i<=H;i++){
		for(int j=1;j<=W;j++){
			cin>>s[i][j];//输入瓷砖类型 
			if(s[i][j]=='@'){fi=i; fj=j; total++;}//记录第一块砖 
		}
	}
	for(int i=1;i<=H;i++){
		for(int j=1;j<=W;j++){
			if(s[fi-1][fj]=='.'){//上 
				s[fi][fj]='*';//标记已过 
				fi--;
				total++;
			}
			else if(s[fi+1][fj]=='.'){//下 
				s[fi][fj]='*';//标记已过 
				fi++;
				total++;
			}
			else if(s[fi][fj-1]=='.'){//左 
				s[fi][fj]='*';//标记已过 
				fj--;
				total++;
			}
			else if(s[fi][fj+1]=='0'){//右 
				s[fi][fj]='*';//标记已过 
				fj++;
				total++;
			}
			else if(s[fi-1][fj]=='*'){//上(回) 
				s[fi][fj]='*';//标记已过 
				fi--;
			}
			else if(s[fi+1][fj]=='*'){//下(回) 
				s[fi][fj]='*';//标记已过 
				fi++;
			}
			else if(s[fi][fj-1]=='*'){//左(回) 
				s[fi][fj]='*';//标记已过 
				fj--;
			}
			else if(s[fi][fj+1]=='*'){//右(回) 
				s[fi][fj]='*';//标记已过 
				fj++;
			}
		}
	}
	printf("%d",total);
	return 0;
}
2022/8/20 10:22
加载中...