zoj 1050 bfs
来源:互联网 发布:阿里云深圳机房 编辑:程序博客网 时间:2024/06/05 18:28
#include <queue>#include <stdio.h>#include <iostream>using namespace std;struct rec { int n, m; };int main() { int N; cin >> N; while(N--) { int n = 0; char c; for(int i = 0; i < 16; i++) { cin.get( c ); if( c == '\n' ) { i--; continue; } if( c == 'b' ) n |= (1 << i); } rec cur = {n, 0}; queue <rec> q; q.push(cur); bool repeat[65536] = {false}, find = false; while(q.empty() == false ) { cur = q.front(); q.pop(); if(cur.n == 0 || cur.n == 65535) { cout << cur.m << endl; find = true; break; } for(int i = 0; i < 16; i++) {//因为在每一步都有十六种选择 int t = cur.n; t ^= (1 << i);//////////////////////////////////////第i个点的变化 if(i - 4 >= 0) t ^= (1 << (i - 4));////////////周围四个点的变化 if(i + 4 < 16) t ^= (1 << (i + 4)); if(i % 4 - 1 >= 0) t ^= (1 << (i - 1)); if(i % 4 + 1 < 4) t ^= (1 << (i + 1)); if(repeat[t] == false) { repeat[t] = true; rec tmp = {t, cur.m + 1}; q.push(tmp); } } } if(find == false) cout << "Impossible" << endl; if(N) cout << endl; } return 0;}
// 尼玛为什么别人都能这么容易想出来,尼玛我为什么这么弱啊。。。。。
- zoj 1050 bfs
- ZOJ 1649 Rescue (BFS)
- ZOJ 1005 Jugs 【BFS】
- zoj 1438 Asteroids! BFS
- zoj 1649 rescue (bfs)
- zoj 1091 bfs
- zoj 1649 BFS
- zoj 2913 BFS
- ZOJ 1136 Multiple(BFS)
- ZOJ 1675 Push!!(BFS)
- ZOJ 1649 BFS
- ZOJ 2913 BFS
- ZOJ 1091 BFS
- ZOJ 1649 Resuce (BFS)
- zoj 3420 纯bfs
- zoj 1047 (bfs)
- zoj 1649 bfs
- zoj 1649 BFS
- 编写递归函数将十进制数转换成二进制数输出
- posix_fadvise源码分析
- Linux中创建静态库和动态库
- Transaction in ADO.net 2.0
- ACE第二个练习:简单的Web服务
- zoj 1050 bfs
- QPushButton的应用
- 软件设计师教程 数据结构之线性链表的实现 (C/C++语言)
- 陷入迷途,程序员
- CRC 校验
- 冷静,开发人员的必备
- 新浪微博完整的API文档
- 数据开发-经典sql语句
- [Android实例] 天天动听 悬浮歌词(迷你歌词)效果解读