玄学WA
  • 板块P1189 SEARCH
  • 楼主_EBE_
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/3/27 12:53
  • 上次更新2024/3/27 16:47:45
查看原帖
玄学WA
1177980
_EBE_楼主2024/3/27 12:53

本地把前两个样例下下来 都过了,提上去全wa

蒟蒻求助

#include<bits/stdc++.h>
#define int long long
const int N=60;
using namespace std;
char mp[N][N];
int fx[10005],fy[10005],n,m,t;
bool vis[10005][N][N];
void dfs(int dep,int x,int y){
	if(vis[dep][x][y] || dep>t)	return;
	vis[dep][x][y]=true;
	int tx=x+fx[dep],ty=y+fy[dep];
	while(tx>=1 && tx<=n && ty>=1 && ty<=m && mp[tx][ty]!='X'){
		if(dep==t)	mp[tx][ty]='*';
		else dfs(dep+1,tx,ty);
		tx+=fx[dep],ty+=fy[dep];
	}
	return;
}
signed main(){
	int mx,my;scanf("%d%d",&n,&m);
	memset(vis,false,sizeof(vis));
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++){
			scanf("%c",&mp[i][j]);
			while(mp[i][j]=='\n')scanf("%c",&mp[i][j]);
			if(mp[i][j]=='*')	mp[i][j]='.',mx=i,my=j;
		}
	
	scanf("%d",&t);
	while(char(t)=='\n')scanf("%d",&t);
	for(int i=1;i<=t;i++){
		string s;cin>>s;
		if(s=="NORTH")	fx[i]=-1;
		if(s=="SOUTH")	fx[i]=1;
		if(s=="WEST")	fy[i]=-1;
		if(s=="EAST")	fy[i]=1;
	}
	dfs(1,mx,my);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++)	printf("%c",mp[i][j]);
		printf("\n");
	}
	return 0;
}
2024/3/27 12:53
加载中...