-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path10452.cpp
More file actions
77 lines (73 loc) · 1.67 KB
/
10452.cpp
File metadata and controls
77 lines (73 loc) · 1.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include<bits/stdc++.h>
using namespace std;
int fx[] = {0,-1,0};
int fy[] = {-1,0,+1};
char p[9][9];
int m,n;
map<char,char>save;
map< pair<int,int> ,string > resultMap;
map< pair<int,int>,bool >visited;
vector<string>result;
void clear(){
visited.clear();
result.clear();
}
void dfs(int dm,int dn){
if(p[dm][dn] == '#' && result.size() == 7){
bool p = false;
for(auto i:result){
if(p) cout<<' ';
p = true;
cout<<i;
}
cout<<endl;
return;
}
int dmx,dny;
for(int i = 0;i<3;i++){
dmx = dm + fx[i];
dny = dn + fy[i];
if(dmx >= 0 && dny >= 0 && dmx<m && dny<n && visited[{dmx,dny}] == false && save.find(p[dmx][dny]) != save.end() ){
visited[{dmx,dny}] = true;
result.push_back(resultMap[{fx[i],fy[i]}]);
dfs(dmx,dny);
visited[{dmx,dny}] = false;
result.pop_back();
}
}
}
int main(){
int tt;
cin>>tt;
save['I'] = 'I';
save['E'] = 'E';
save['H'] = 'H';
save['O'] = 'O';
save['V'] = 'V';
save['A'] = 'A';
save['#'] = '#';
resultMap[{0,-1}] = "left";
resultMap[{-1,0}] = "forth";
resultMap[{0,1}] = "right";
while(tt--){
cin>>m>>n;
cin.ignore();
string s;
for(int i = 0;i<m;i++){
getline(cin,s);
int k = 0;
for(auto j:s){
p[i][k] = j;
k++;
}
}
for(int i = 0;i<n;i++){
if(p[m-1][i] == '@'){
visited[{m-1,i}] = true;
dfs(m-1,i);
break;
}
}
clear();
}
}