LQB2017A01迷宫

这个题,,,由于dfs是个bool型的,,,在递归的时候,忘记写return

然后就一直错orz

 1 #include <iostream>
 2 #include <string>
 3 #include <cstring>
 4 
 5 using namespace std;
 6 string a[11];
 7 int ans=0;
 8 
 9 int vis[11][11];
10 
11 bool dfs(int i,int j) {
12     if (i < 0 || j < 0 || i > 9 || j > 9)
13         return true;
14     if (vis[i][j] == 1)
15         return false;
16 
17 
18     vis[i][j] = 1;
19 
20     if (a[i][j] == 'U')
21         return dfs(i - 1, j);//这个地方一定要加return,因为这是一个bool型的
22 
23     if (a[i][j] == 'D')
24         return dfs(i + 1, j);
25     if (a[i][j] == 'L')
26         return dfs(i, j - 1);
27     if (a[i][j] == 'R')
28         return dfs(i, j + 1);
29 //    switch(a[i][j]) {//这样也可以
30 //        case 'U':
31 //            return dfs(i - 1, j);
32 //        case 'D':
33 //            return dfs(i + 1, j);
34 //        case 'L':
35 //            return dfs(i, j - 1);
36 //        case 'R':
37 //            return dfs(i, j + 1);
38 //    }

39 } 40 41 int main() { 42 a[0] = "UDDLUULRUL"; 43 a[1] = "UURLLLRRRU"; 44 a[2] = "RRUURLDLRD"; 45 a[3] = "RUDDDDUUUU"; 46 a[4] = "URUDLLRRUU"; 47 a[5] = "DURLRLDLRL"; 48 a[6] = "ULLURLLRDU"; 49 a[7] = "RDLULLRDDD"; 50 a[8] = "UUDDUDUDLL"; 51 a[9] = "ULRDLUURRR"; 52 for (int i = 0; i < 10; ++i) { 53 for (int j = 0; j < 10; ++j) { 54 memset(vis, 0, sizeof(vis)); 55 if (dfs(i, j)) 56 ans++; 57 58 } 59 60 } 61 cout<<ans; 62 return 0; 63 64 }

 

posted @ 2020-07-29 10:50  安之若醇  阅读(151)  评论(0)    收藏  举报
Live2D服务支持