码迷,mamicode.com
首页 > 其他好文 > 详细

【HDU1198】Farm Irrigation(回溯+记忆化搜索)

时间:2014-07-26 14:15:55      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   数据   io   for   div   

数据流小,深搜即可。有些暴力。看其他人的题解用二维转换成一维做的并查集很巧妙,马上去研究一下!!

 

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdlib>
 4 #include <cstdio>
 5 #include <cmath>
 6 #include <cctype>
 7 #include <algorithm>
 8 #include <numeric>
 9 #include <string>
10 #include <limits.h>
11 #include <map>
12 using namespace std;
13 
14 int m, n, ans = 0;
15 char Map[55][55];
16 bool vis[55][55];
17 map<char, string> check;
18 
19 void dfs (int x, int y) {
20 
21     vis[x][y] = 1;
22 
23     if (check[Map[x][y]].find("U") != -1 && check[Map[x - 1][y]].find("D") != -1) {
24         if (!vis[x - 1][y]) dfs (x - 1, y);
25     }
26 
27     if (check[Map[x][y]].find("D") != -1 && check[Map[x + 1][y]].find("U") != -1) {
28         if (!vis[x + 1][y]) dfs (x + 1, y);
29     }
30 
31     if (check[Map[x][y]].find("L") != -1 && check[Map[x][y - 1]].find("R") != -1) {
32         if (!vis[x][y - 1]) dfs (x, y - 1);
33     }
34 
35     if (check[Map[x][y]].find("R") != -1 && check[Map[x][y + 1]].find("L") != -1) {
36         if (!vis[x][y + 1]) dfs (x, y + 1);
37     }
38 }
39 
40 int main () {
41 
42     check[A] = "UL";  check[B] = "UR";  check[C] = "DL";
43     check[D] = "DR";  check[E] = "UD";  check[F] = "LR";
44     check[G] = "ULR"; check[H] = "UDL"; check[I] = "DLR";
45     check[J] = "UDR"; check[K] = "UDLR";
46 
47     while (~scanf("%d%d", &m, &n)) {
48         if (m < 0 && n < 0) {
49             break;
50         }
51         memset (vis, 0, sizeof(vis));
52         memset (Map, 0, sizeof(Map));
53         for (int i = 0; i < m ; ++ i) {
54             for (int j = 0 ; j < n; ++ j) {
55                 cin >> Map[i][j];
56             }
57         }
58         ans = 0;
59         for (int i = 0; i < m; ++ i) {
60             for (int j = 0; j < n; ++j) {
61                 if (vis[i][j] != 1) {
62                     dfs (i, j);
63                     ans ++;
64                 }
65             }
66         }
67 
68         cout << ans << endl;
69     }
70     return 0;
71 }

 

【HDU1198】Farm Irrigation(回溯+记忆化搜索),布布扣,bubuko.com

【HDU1198】Farm Irrigation(回溯+记忆化搜索)

标签:style   blog   color   os   数据   io   for   div   

原文地址:http://www.cnblogs.com/Destiny-Gem/p/3869648.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!