#include "stdio.h"
#include "queue"
#include "cstring"
using namespace std;struct node{int num[3];int output;
}now,nex;int vis[101][101][101];
int rq[3];//最大容量 bool check(node x){if((x.num[0] == x.num[1] && x.num[2] == 0 )||(x.num[0] == x.num[2] && x.num[1] == 0)||(x.num[1] == x.num[2] && x.num[0] == 0)){return true;}return false;
}void bfs(int ss, int n, int m){queue<node>s;memset(vis,0,sizeof(vis));now.num[0] = ss;now.num[1] = n;now.num[2] = m;vis[ss][n][m] = 1; //记录当前的这种情况我已经访问了 now.output = 0; //记录层数 s.push(now);while(!s.empty()){now = s.front();if(check(now)){printf("%d\n",now.output);return ;}s.pop();for(int i = 0; i < 3; i++){for(int j = 0; j < 3; j++){if(i == j) continue;if(now.num[i] <= rq[j]-now.num[j]){//如果能倒光 nex.num[j] = now.num[j] + now.num[i];nex.num[i] = 0;}else{//如果不能倒光 nex.num[i] = now.num[i] - (rq[j]-now.num[j]);nex.num[j] = rq[j];}//另外一个不变 for(int ii=0;ii<3;ii++)  {  if(ii==i||ii==j)  continue;  nex.num[ii]=now.num[ii];  }  //层次加一 ,千万别写成now.output++!!! nex.output = now.output + 1;//记忆化状态             if(vis[nex.num[0]][nex.num[1]][nex.num[2]]==0){vis[nex.num[0]][nex.num[1]][nex.num[2]]=1;s.push(nex);}}}}printf("NO\n");return ;
}int main(){int s, n, m;while(scanf("%d%d%d",&s,&n,&m)!=EOF && s!=0 && n!=0 && m!=0){if(s & 1){printf("NO\n"); }else {rq[0] = s;rq[1] = n;rq[2] = m;bfs(s,0,0); }}return 0;
} 

这里注意的是会结构体中++是对.后面的加加,而不是整体,还有题目的理解很重要。本体是BFS的经典题型。

HDU-OJ 杭电1495非常可乐相关推荐

  1. 杭电1495非常可乐

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

  2. HDU 献给杭电五十周年校庆的礼物

    献给杭电五十周年校庆的礼物 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...

  3. HDU献给杭电五十周年校庆的礼物 (切蛋糕,线段划分区域)

    献给杭电五十周年校庆的礼物 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  4. hdu(杭电oj)输入输出练习题目总结

    1000.1001 .1089.1090.1091.1092.1093.1094.1095.1096 转载于:https://www.cnblogs.com/ruigelwang/p/11257752 ...

  5. HDU - 2018杭电ACM集训队单人排位赛 - 1 - Problem C. 狙击敌人

    Problem C. 狙击敌人 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) ...

  6. HDU杭电OJ经典100题2000-2099_Java版详细题解(持续更新)

    今年寒假打算用Java把杭电2000-2099全部AC(现在持续更新),如下是题目链接,之后是我的题解,全部做完后我会把所有AC的题解打包上传的 题号 题名 题号 题名 2000 ASCII码排序 2 ...

  7. 杭电OJ分类题目(1)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(1) HDU Introduction HDU ...

  8. 杭电OJ分类题目(4)-Graph

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(4) HDU Graph Theory - U ...

  9. 杭电OJ分类题目(3)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(3) HDU Computational Ge ...

最新文章

  1. JAVA实现斐波那契数列问题(《剑指offer》)
  2. 《构建之法》需求分析 读书笔记 Week6
  3. Codeforces 1188
  4. java panel 左对齐,将Shape的中心与JPanel的中心对齐 - java
  5. 网络通信之 字节序转换原理与网络字节序、大端和小端模式
  6. java数据传递给安卓_Android数据传递的五种方法汇总
  7. Matlab中左除和右除
  8. Android IOS WebRTC 音视频开发总结(十一)-- stunturn部署
  9. Native Application 开发详解
  10. SQL Server 2005登录名,用户名,角色,架构之间的关系
  11. python行业缺口_根据缺口的模式选股买股票,python 学习代码
  12. pythonsys用法_Python 使用sys模块
  13. pytorch与resnet(六) 预训练模型使用的场景
  14. ascii c语言打印出来,C语言打印出ASCII码表,怎么写?
  15. mysql中表结构是什么_查询MySQL数据库中表结构
  16. CasADi——数据类型详解与基本操作介绍
  17. windows操作系统服务器 网卡速度关联项
  18. 肠道菌群失调与炎症性肠病的关联
  19. Input 输入调出数字输入
  20. 数据分区与放置策略解析_数据策略好数据与坏数据

热门文章

  1. Vue.js从0开始到实战开发1:通过简单案例从0开始了解Vue
  2. [含lw+开题报告+源码等]SSM酒店管理系统|旅店管理[包运行成功]
  3. java下bin目下的exe
  4. 修改3389端口的方法?
  5. 生命,因为热爱所以敬畏
  6. 04 面向对象之:三大特性:继承,封装,多态
  7. Tesla M40 训练机组装与散热改造
  8. 爬虫库分享(一):requests常见用法总结
  9. python矩阵和向量乘积_矩阵与向量的乘积
  10. XSLT基础 XSL 与 XSLT