题意是给出一个3*3的黑白网格,每点击其中一格就会使某些格子的颜色发生转变,求达到目标状态网格的操作。可用BFS搜索解答,用vector储存每次的操作

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. struct Node{
  5. int num;//储存状态
  6. vector<int> path;//储存操作
  7. };
  8. int visit[];
  9. int click(int i, int num){
  10. int tmp = ;
  11. switch(i){
  12. case :tmp = num ^ ; break;//点击第0位,则0、1、3、4位取反,这里用异或实现,点击其他的同理
  13. case :tmp = num ^ ; break;
  14. case :tmp = num ^ ; break;
  15. case :tmp = num ^ ; break;
  16. case :tmp = num ^ ; break;
  17. case :tmp = num ^ ; break;
  18. case :tmp = num ^ ; break;
  19. case :tmp = num ^ ; break;
  20. case :tmp = num ^ ; break;
  21. }
  22. return tmp;
  23. }
  24.  
  25. Node bfs(int n){
  26. queue<Node> q;
  27. Node front;
  28. front.num = n;
  29. q.push(front);
  30. while(!q.empty()){
  31. front = q.front(); q.pop();
  32.  
  33. for(int i = ; i < ; i++){
  34. Node tmp = front;
  35. tmp.num = click(i, front.num);
  36. tmp.path.push_back(i+);
  37.  
  38. if(tmp.num == ) return tmp;
  39. else{
  40. if(!visit[tmp.num]){
  41. q.push(tmp);
  42. visit[tmp.num] = ;
  43. }
  44. }
  45. }
  46. }
  47. }
  48.  
  49. int main(){
  50. int n;
  51. cin >> n;
  52. while(n--){
  53. string s;
  54. cin >> s;
  55. int num = ;
  56. for(int i = ; i < s.size(); i++){
  57. if(s[i] == 'b')num = *num + ;
  58. else if(s[i] == 'w') num = *num;
  59. }
  60. memset(visit, , sizeof(visit));
  61. visit[num] = ;
  62. Node tmp = bfs(num);
  63. for(int i = ; i < tmp.path.size(); i++){
  64. cout << tmp.path[i];
  65. }
  66. cout << endl;
  67. }
  68. }

Sicily 1048: Inverso(BFS)的更多相关文章

  1. 深搜(DFS)广搜(BFS)详解

    图的深搜与广搜 一.介绍: p { margin-bottom: 0.25cm; direction: ltr; line-height: 120%; text-align: justify; orp ...

  2. 【算法导论】图的广度优先搜索遍历(BFS)

    图的存储方法:邻接矩阵.邻接表 例如:有一个图如下所示(该图也作为程序的实例): 则上图用邻接矩阵可以表示为: 用邻接表可以表示如下: 邻接矩阵可以很容易的用二维数组表示,下面主要看看怎样构成邻接表: ...

  3. 深度优先搜索(DFS)与广度优先搜索(BFS)的Java实现

    1.基础部分 在图中实现最基本的操作之一就是搜索从一个指定顶点可以到达哪些顶点,比如从武汉出发的高铁可以到达哪些城市,一些城市可以直达,一些城市不能直达.现在有一份全国高铁模拟图,要从某个城市(顶点) ...

  4. 【BZOJ5492】[HNOI2019]校园旅行(bfs)

    [HNOI2019]校园旅行(bfs) 题面 洛谷 题解 首先考虑暴力做法怎么做. 把所有可行的二元组全部丢进队列里,每次两个点分别向两侧拓展一个同色点,然后更新可行的情况. 这样子的复杂度是\(O( ...

  5. 深度优先搜索(DFS)和广度优先搜索(BFS)

    深度优先搜索(DFS) 广度优先搜索(BFS) 1.介绍 广度优先搜索(BFS)是图的另一种遍历方式,与DFS相对,是以广度优先进行搜索.简言之就是先访问图的顶点,然后广度优先访问其邻接点,然后再依次 ...

  6. 图的 储存 深度优先(DFS)广度优先(BFS)遍历

    图遍历的概念: 从图中某顶点出发访遍图中每个顶点,且每个顶点仅访问一次,此过程称为图的遍历(Traversing Graph).图的遍历算法是求解图的连通性问题.拓扑排序和求关键路径等算法的基础.图的 ...

  7. 数据结构与算法之PHP用邻接表、邻接矩阵实现图的广度优先遍历(BFS)

    一.基本思想 1)从图中的某个顶点V出发访问并记录: 2)依次访问V的所有邻接顶点: 3)分别从这些邻接点出发,依次访问它们的未被访问过的邻接点,直到图中所有已被访问过的顶点的邻接点都被访问到. 4) ...

  8. 层层递进——宽度优先搜索(BFS)

    问题引入 我们接着上次“解救小哈”的问题继续探索,不过这次是用宽度优先搜索(BFS). 注:问题来源可以点击这里 http://www.cnblogs.com/OctoptusLian/p/74296 ...

  9. HDU.2612 Find a way (BFS)

    HDU.2612 Find a way (BFS) 题意分析 圣诞节要到了,坤神和瑞瑞这对基佬想一起去召唤师大峡谷开开车.百度地图一下,发现周围的召唤师大峡谷还不少,这对基佬纠结着,该去哪一个...坤 ...

随机推荐

  1. Java正则表达式入门——转自RUNOOB.COM

    Java 正则表达式 正则表达式定义了字符串的模式. 正则表达式可以用来搜索.编辑或处理文本. 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别. Java正则表达式和Perl的是最为相似 ...

  2. 可跨域的单点登录(SSO)实现方案【附.net代码】

    SSO简介 定义: 传统的单站点登录访问授权机制是:登录成功后将用户信息保存在session中,sessionId保存在cookie中,每次访问需要登录访问的资源(url)时判断当前session是否 ...

  3. matlab 假设检验

    转自:http://blog.csdn.net/colddie/article/details/7773278 函数名称 函数说明 调用格式 正态总体的参数检验 ztest 单样本均值的z检验 (总体 ...

  4. 【ios开发】使用自定义的TableViewCell

    当系统自带的cell无法满足我们的要求的时候,我们就可以自定义自己的cell. 先看看效果,这个效果有点重复造轮子的感觉,因为UITableView已经实现了这种布局. 打造自己的cell只需简单的3 ...

  5. jquery版固定边栏滚动特效

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  6. block

    不使用__block修饰: ; self.myBlock = ^(){ NSLog(@"block num == %d",num); }; num = ; self.myBlock ...

  7. ka/ks

    1. If dN/dS = 1, amino-acid substitutions may be largely neutral. However, there is also the possibi ...

  8. Genymotion安装问题

    今天安装虚拟机各种报错,网上收了各种资料,然而并不能解决问题.啥也没干整整一天总算找到解决方案解决.     解决方法︰ 删除所有以前的虚拟框适配器 转到设备管理器中,单击"操作" ...

  9. 学记:spring boot使用官网推荐以外的其他数据源druid

    虽然spring boot提供了4种数据源的配置,但是如果要使用其他的数据源怎么办?例如,有人就是喜欢druid可以监控的强大功能,有些人项目的需要使用c3p0,那么,我们就没办法了吗?我们就要编程式 ...

  10. dotnet获取PDF文件的页数

    #region 获取PDF文件的页数 private int BytesLastIndexOf(Byte[] buffer, int length, string Search) { if (buff ...