HDU - 1429 - 胜利大逃亡(续)
来源:互联网 发布:隐形眼镜推荐 知乎 编辑:程序博客网 时间:2024/05/16 09:59
胜利大逃亡(续)
题目传送:HDU - 1429 - 胜利大逃亡(续)
基础广搜题,注意是用位运算来判断的是否有钥匙的。
少写一个字母找了好久的bug。。好久的bug。。的bug。。bug。。g
AC代码:
#include <map>#include <set>#include <cmath>#include <deque>#include <queue>#include <stack>#include <cstdio>#include <cctype>#include <string>#include <vector>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>#define LL long long#define INF 0x7fffffffusing namespace std;int n, m, t;bool vis[21][21][1 << 10];char mp[25][25];const int dx[] = {-1, 0, 1, 0};const int dy[] = {0, 1, 0, -1};struct node { int x, y, t, state; node() {} node(int _x, int _y, int _t, int _state) : x(_x), y(_y), t(_t), state(_state) {}};int bfs(int x, int y) { memset(vis, false, sizeof(vis)); queue<node> q; q.push(node(x, y, 0, 0)); vis[x][y][0] = true; while(!q.empty()) { node cur = q.front(); q.pop();// cout << cur.x << " " << cur.y << " " << cur.state << endl; if(cur.t >= t-1) break; for(int i = 0; i < 4; i ++) { int xx = cur.x + dx[i]; int yy = cur.y + dy[i]; int tt = cur.t + 1; int sta = cur.state; if(xx < 0 || xx >= n || yy < 0 || yy >= m || mp[xx][yy] == '*' || vis[xx][yy][sta]) { continue; }// cout << cur.x << " " << cur.y << " " << cur.state << endl; if(isupper(mp[xx][yy]) && !(sta & (1 << (mp[xx][yy] - 'A'))) ) { continue; } if(islower(mp[xx][yy])) { sta |= (1 << (mp[xx][yy] - 'a')); } if(mp[xx][yy] == '^') { return tt; } if(!vis[xx][yy][sta]) { vis[xx][yy][sta] = true; q.push(node(xx, yy, tt, sta)); } } } return -1;}int main() { while(scanf("%d %d %d", &n, &m, &t) != EOF) { for(int i = 0; i < n; i ++ ){ scanf("%s", mp[i]); } int sx, sy; for(int i = 0; i < n; i ++) { for(int j = 0; j < m; j ++) { if(mp[i][j] == '@') { sx = i; sy = j; break; } } } printf("%d\n", bfs(sx, sy)); } return 0;}
0 0
- HDU 1429 胜利大逃亡(续)
- hdu 1429胜利大逃亡(续)
- hdu 1429 胜利大逃亡(续)
- HDU 1429 胜利大逃亡(续)
- hdu 1429 胜利大逃亡(续)
- hdu 1429 胜利大逃亡(续)
- HDU 1429 胜利大逃亡(续)
- hdu 1429胜利大逃亡(续)
- HDU 1429 胜利大逃亡(续)
- hdu 1429 胜利大逃亡(续)
- hdu-1429 胜利大逃亡(续)
- HDU 1429 胜利大逃亡(续)
- Hdu 1429 胜利大逃亡(续)
- hdu 1429 胜利大逃亡(续)
- HDU--1429 胜利大逃亡(续)
- 1429 胜利大逃亡( 续 ) hdu
- HDU 1429 胜利大逃亡(续)
- hdu 1429 胜利大逃亡(续)
- html5中的table相关内容
- Eclipse
- win10 英伟达独显更新驱动 无法进入密码输入界面解决办法
- KMP算法精讲
- hdoj 1969 分蛋糕问题(二分法的应用)
- HDU - 1429 - 胜利大逃亡(续)
- iOS ViewController生命周期
- Java生成和操作Excel文件
- Triangle LOVE
- 2015080304 - 孤独的幸存者1随想
- android.app.SuperNotCalledException错误
- HTML5 canvas标签
- 2、C语言和设计模式(继承、封装、多态)
- STL hash_map使用