原题链接:http://www.dotcpp.com/oj/problem1429.html
比较笨重的一种写法,不过好歹自己写了很久,过了
#include <iostream>
using namespace std;
int m,n;
int x,y,k,r,c;
char s;
int a[100][100];
int cnt;
void dfs(int kx,int ky,char ks,int kk)
{
kk--;
if(kk==-1)
{
r=kx;
c=ky;
return ;
}
if(ks=='U'){
if(a[kx][ky]){
a[kx][ky]=0;
dfs(kx,ky+1,'R',kk);
}
else{
a[kx][ky]=1;
dfs(kx,ky-1,'L',kk);
}
}
if(ks=='D'){
if(a[kx][ky]){
a[kx][ky]=0;
dfs(kx,ky-1,'L',kk);
}
else{
a[kx][ky]=1;
dfs(kx,ky+1,'R',kk);
}
}
if(ks=='L'){
if(a[kx][ky]){
a[kx][ky]=0;
dfs(kx-1,ky,'U',kk);
}
else{
a[kx][ky]=1;
dfs(kx+1,ky,'D',kk);
}
}
if(ks=='R'){
if(a[kx][ky]){
a[kx][ky]=0;
dfs(kx+1,ky,'D',kk);
}
else{
a[kx][ky]=1;
dfs(kx-1,ky,'U',kk);
}
}
}
int main()
{
cin>>n>>m;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>a[i][j];
}
}
cin>>x>>y>>s>>k;
dfs(x,y,s,k);
cout<<r<<" "<<c<<endl;
return 0;
}