简单DFS。
1 /* 2414 */ 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5 6 const int n = 8; 7 char map[10][10]; 8 int x, y, d; 9 char dirs[5] = "^v<>"; 10 int dir[4][2] = { 11 -1,0, 1,0, 0,-1, 0,1 12 }; 13 int tdir[4][3] = { 14 2,3,1, 3,2,0, 1,0,3, 0,1,2 15 }; 16 17 inline bool check(int x, int y) { 18 return x<0 || x>=n || y<0 || y>=n; 19 } 20 21 void dfs(int x, int y) { 22 int i, j, k; 23 int xx, yy; 24 25 xx = x + dir[d][0]; 26 yy = y + dir[d][1]; 27 if (check(xx, yy)) 28 return ; 29 if (map[xx][yy] == '.') { 30 map[xx][yy] = map[x][y]; 31 map[x][y] = '.'; 32 } else { 33 dfs(xx, yy); 34 map[xx][yy] = map[x][y]; 35 map[x][y] = '.'; 36 } 37 } 38 39 int main() { 40 int i, j, k; 41 char cmd[10]; 42 int xx, yy; 43 44 #ifndef ONLINE_JUDGE 45 freopen("data.in", "r", stdin); 46 freopen("data.out", "w", stdout); 47 #endif 48 49 while (scanf("%s", map[0]) != EOF) { 50 if (map[0][0]=='-' && map[0][1]=='-' && map[0][2]=='