博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【BFS】HDU1429 - 胜利大逃亡(续)
阅读量:6815 次
发布时间:2019-06-26

本文共 2000 字,大约阅读时间需要 6 分钟。

与上一道题:HDU1885 - Key Task基本没什么两样

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 using namespace std; 9 const int maxn = 25;10 int n, m, fail;11 char G[maxn][maxn];12 int vis[maxn][maxn][2000];13 const int dr[] = {-1, 0, 1, 0};14 const int dc[] = { 0, 1, 0,-1};15 16 struct Node17 {18 int r, c, key, step;19 Node(int r = 0, int c = 0, int key = 0, int step = 0):r(r), c(c), key(key), step(step){}20 };21 22 bool isInside(int r, int c)23 {24 if(r > 0 && r <= n && c > 0 && c <= m && G[r][c] != '*')25 return true;26 else27 return false;28 }29 30 void bfs(int rr, int cc)31 {32 queue
q;33 memset(vis, 0, sizeof vis);34 Node node(rr, cc, 0, 0);35 q.push(node);36 while(!q.empty()) {37 Node u = q.front();38 q.pop();39 if(G[u.r][u.c] == '^') {40 if(u.step < fail)41 printf("%d\n", u.step);42 else43 printf("-1\n");44 return;45 }46 for(int i = 0; i < 4; i++) {47 Node v(u.r + dr[i], u.c + dc[i], u.key, u.step+1);48 if(isInside(v.r, v.c)) {49 if(islower(G[v.r][v.c])) {50 int k = G[v.r][v.c] - 'a';51 if((v.key & (1 << k)) == 0) {52 v.key += (1 << k);53 }54 if(!vis[v.r][v.c][v.key]) {55 vis[v.r][v.c][v.key] = 1;56 q.push(v);57 }58 }59 else if(isupper(G[v.r][v.c])) {60 int k = G[v.r][v.c] - 'A';61 if(v.key & (1 << k) && !vis[v.r][v.c][v.key]) {62 vis[v.r][v.c][v.key] = 1;63 q.push(v);64 }65 }66 else {67 if(!vis[v.r][v.c][v.key]) {68 vis[v.r][v.c][v.key] = 1;69 q.push(v);70 }71 }72 }73 }74 }75 printf("-1\n");76 }77 int main()78 {79 // freopen("in.txt", "r", stdin);80 while(scanf("%d %d %d", &n, &m, &fail) != EOF) {81 memset(G, '*', sizeof G);82 int x, y;83 for(int i = 1; i <= n; i++) {84 scanf("%s", G[i]+1);85 G[i][m+1] = '*';86 G[i][m+2] = '\0';87 if(strchr(G[i], '@')) {88 x = i;89 y = strchr(G[i], '@') - *G - i*25;90 }91 }92 //printf("%d %d\n", x, y);93 bfs(x, y);94 }95 return 0;96 }

 

转载于:https://www.cnblogs.com/kikii233/p/6078386.html

你可能感兴趣的文章
网络编程中的CAP & 有趣的存储框架(关系型、NoSQL)全图
查看>>
Web前端开发基础 第四课(认识CSS样式)
查看>>
Mysql自增字段
查看>>
Java日期时间格式转换
查看>>
linux下常见的包安装方式
查看>>
html常用标签
查看>>
bitmap==null
查看>>
jQuery.事件委托
查看>>
计算机基础(二)
查看>>
跟我学算法-tensorflow 实现logistics 回归
查看>>
mongodb sort limit和skip用法
查看>>
新的一周
查看>>
Jabber Software:Jabber-NET、agsXMPP与Wilefire[转]
查看>>
java中判断字符串是否为数字的方法的几种方法 (转载)
查看>>
iperf测试工具
查看>>
Java 并发编程基础导航
查看>>
Docker(一):Docker入门教程
查看>>
在8086中,[ idata],[bx]表示内存单元时。可能是一个字节,也可能是一个字。
查看>>
【MPI】并行奇偶交换排序
查看>>
并发编程之线程
查看>>