BFS题

一共有六种状态转移 一一枚举就好 设置一个标记数组。 用二重循环可以很清晰的解决代码长的问题

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<queue>
  4. using namespace std;
  5. int v[];
  6. int sign[][][];
  7. struct cup//记录遍历中3个水杯容藏可乐情况
  8. {
  9. int v[];
  10. int step;
  11. }temp;
  12.  
  13. void pour(int a,int b)//倒水函数,把a杯子中的可乐倒到b杯子中
  14. {
  15. int sum=temp.v[a]+temp.v[b];
  16. if(sum>=v[b])
  17. temp.v[b]=v[b];
  18. else
  19. temp.v[b]=sum;
  20. temp.v[a]=sum-temp.v[b];
  21. }
  22.  
  23. void bfs()
  24. {
  25. int i,j;
  26. queue<cup>q;
  27. cup cnt;
  28. cnt.v[]=v[];
  29. cnt.v[]=;
  30. cnt.v[]=;
  31. cnt.step=;
  32. q.push(cnt);
  33. memset(sign,,sizeof(sign));
  34. sign[v[]][][]=;
  35. while(!q.empty())
  36. {
  37. cnt=q.front();
  38. q.pop();
  39. if(cnt.v[]==cnt.v[]&&cnt.v[]==)
  40. {
  41. printf("%d\n",cnt.step);
  42. return ;
  43. } for(i=;i<;++i)
  44. {
  45. for(j=;j<;++j)
  46. {
  47. if(i!=j)//自己不倒水给自己
  48. {
  49. temp=cnt;//每个水位情况都要把所有操作枚举一遍,所以都要赋值为原始水位情况
  50. pour(i,j);
  51. if(!sign[temp.v[]][temp.v[]][temp.v[]])
  52. {
  53. temp.step++;
  54. q.push(temp);
  55. sign[temp.v[]][temp.v[]][temp.v[]]=;
  56. }
  57. }
  58. }
  59. }
  60. }
  61. printf("NO\n");
  62. }
  63.  
  64. int main()
  65. {
  66. while(scanf("%d%d%d",&v[],&v[],&v[])&&v[]||v[]||v[])
  67. {
  68. if(v[]>v[])
  69. {
  70. int t=v[];
  71. v[]=v[];
  72. v[]=t;
  73. }
  74. bfs();
  75. }
  76. return ;
  77. }

非常可乐 HDU1495的更多相关文章

  1. HDU-1495 非常可乐(BFS)

    广搜的灵活应用题: 非常可乐 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  2. 非常可乐(杭电hdu1495)bfs

      非常可乐 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  3. HDU1495 非常可乐 —— BFS + 模拟

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495 非常可乐 Time Limit: 2000/1000 MS (Java/Others)    M ...

  4. HDU1495 非常可乐

    解题思路:简单的宽搜,见代码: #include<cstdio> #include<cstring> #include<algorithm> #include< ...

  5. HDU-1495 非常可乐 (嵌套结构体-广搜 对比 一般广搜)

    题意 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多.但 ...

  6. HDU1495 非常可乐(BFS/数论)

    大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多.但see ...

  7. 【HDU - 1495】非常可乐

    -->非常可乐  Descriptions: 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一 ...

  8. hdoj 1495 非常可乐【bfs隐式图】

    非常可乐 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  9. HDU1495(bfs)

    非常可乐 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

随机推荐

  1. eclipse2019-03设置代码编辑区背景为图片

    一.我的主题设置如下所示 二.找到如下所示或类似的文件夹 三.在该文件夹里的images文件夹里添加图片 四.在CSS目录下的e4-dark_win.css文件中添加如下代码 .MPart Style ...

  2. 20155334 2016-2017-2 《Java程序设计》第五周学习总结

    20155334 2016-2017-2 <Java程序设计>第五周学习总结 教材学习内容总结 第八章:异常处理 Java中所有错误都会被打包为对象,在编程的时候会遇到因各种原因而导致的错 ...

  3. C static struct

    参考链接:  http://blog.csdn.net/keyeagle/article/details/6708077/ NOTICE: 静态全局变量 与 普通的全局变量的区别   static 全 ...

  4. C# List分页

    假设你每页10条数据当前是第3页 跳到第4页则:List.Skip((4-1)*10).Take(10) 本文来自SunShine,转载请标明出处: http://do.jhost.cn/sunshi ...

  5. SpringBoot整合MyBatis(注解版)

    详情可以参考Mybatis官方文档 http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/ (1). ...

  6. 【漏洞挖掘】攻击对外开放的Docker API接口

    https://medium.com/@riccardo.ancarani94/attacking-docker-exposed-api-3e01ffc3c124 1)场景 攻击开放在互联网的Dock ...

  7. [转] bss段、data段、text段

    1.前言 一个程序本质上都是由 BSS 段.DATA段.TEXT段三个组成的. 本文主要分编译时和运行时分别对 对data段 bss段 text段 堆 栈作一简要说明 2. 程序编译时概念说明 程序与 ...

  8. 所有Windows7下游戏的全屏问题

    Win键+R键,打开运行窗口,输入regedit 回车,这样就打开了注册表编辑器,然后,定位到以下位置:HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ ...

  9. 在分析nginx日志时常用命令总结【转】

    1. 利用grep ,wc命令统计某个请求或字符串出现的次数 比如统计GET /app/kevinContent接口在某天的调用次数,则可以使用如下命令: [root@Fastdfs_storage_ ...

  10. 028_rync和inotify实现实时备份

    一.服务节点安装inotify-tools. 确保系统后以下输出=> [root@xxxx]# ll /proc/sys/fs/inotify/ total 0 -rw-r--r-- 1 roo ...