http://lx.lanqiao.org/problem.page?gpid=T125
1 #include <stdio.h> 2 #include <algorithm> 3 #include <iostream> 4 #include <string.h> 5 #include <string> 6 #include <math.h> 7 #include <stdlib.h> 8 #include <queue> 9 #include <stack> 10 #include <set> 11 #include <map> 12 #include <list> 13 #include <iomanip> 14 #include <vector> 15 #pragma comment(linker, "/STACK:1024000000,1024000000") 16 #pragma warning(disable:4786) 17 18 using namespace std; 19 20 const int INF = 0x3f3f3f3f; 21 const int Max = 10000 + 10; 22 const double eps = 1e-8; 23 const double PI = acos(-1.0); 24 int a[110][110]; 25 26 void run(int x , int y , char str , int k) 27 { 28 if(k == 0) 29 printf("%d %d\n", x , y); 30 else 31 { 32 k --; 33 if(a[x][y] == 0) 34 { 35 a[x][y] = 1; 36 if(str == 'U') 37 run(x , y - 1 , 'L' , k); 38 else if(str == 'D') 39 run(x , y + 1 , 'R' , k); 40 else if(str == 'L') 41 run(x + 1, y , 'D' , k); 42 else 43 run(x - 1 , y , 'U' , k); 44 } 45 else 46 { 47 a[x][y] = 0; 48 if(str == 'U') 49 run(x , y + 1 , 'R' , k); 50 else if(str == 'D') 51 run(x , y - 1 , 'L' , k); 52 else if(str == 'L') 53 run(x - 1, y , 'U' , k); 54 else 55 run(x + 1 , y , 'D' , k); 56 } 57 } 58 } 59 60 int main() 61 { 62 int i , j , n , m , x , y , k; 63 char s; 64 scanf("%d%d",&n,&m); 65 for(i = 0;i < n;i ++) 66 for(j = 0;j < m;j ++) 67 scanf("%d",&a[i][j]); 68 scanf("%d %d %c %d", &x , &y , &s , &k); 69 run(x , y , s , k); 70 return 0; 71 }