rt,应该是29行的循环有问题,但是我的Dev一调试就崩溃了。代码:
#include<bits/stdc++.h>
using namespace std;
char m[60][60];int r,c,n,d[1010];
void dfs(int x,int y,int cnt)
{
if(cnt==n)
{
if(m[x][y]!='X')m[x][y]='*';
return;
}
if(d[cnt]==1&&x-1>=0)dfs(x-1,y,cnt);
if(d[cnt+1]==1&&x-1>=0)dfs(x-1,y,cnt+1);
if(d[cnt]==2&&y+1<c)dfs(x,y+1,cnt);
if(d[cnt+1]==2&&y+1<c)dfs(x,y+1,cnt+1);
if(d[cnt]==3&&x+1<r)dfs(x+1,y,cnt);
if(d[cnt+1]==3&&x+1<r)dfs(x+1,y,cnt+1);
if(d[cnt]==4&&y-1>=0)dfs(x,y-1,cnt);
if(d[cnt+1]==4&&y-1>=0)dfs(x,y-1,cnt+1);
return;
}
int main()
{
int x,y;
scanf("%d%d",&r,&c);
for(int i=0;i<r;i++)
{
string s;
scanf("%s",&s);
for(int j=0;j<c;j++)
{
m[i][j]=s[j];
if(s[j]=='*')
{x=i;y=j;s[j]='.';}
}
}
scanf("%d",&n);
for(int i=0;i<n;i++)
{
string s;scanf("%s",&s);
if(s=="NORTH")d[i]=1;
if(s=="EAST")d[i]=2;
if(s=="SORTH")d[i]=3;
if(s=="WEST")d[i]=4;
}
dfs(x,y,0);
for(int i=0;i<r;i++)printf("%s\n",m[i]);
return 0;
}