HDU-OJ 杭电1495非常可乐
#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非常可乐相关推荐
- 杭电1495非常可乐
非常可乐 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HDU 献给杭电五十周年校庆的礼物
献给杭电五十周年校庆的礼物 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- HDU献给杭电五十周年校庆的礼物 (切蛋糕,线段划分区域)
献给杭电五十周年校庆的礼物 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- hdu(杭电oj)输入输出练习题目总结
1000.1001 .1089.1090.1091.1092.1093.1094.1095.1096 转载于:https://www.cnblogs.com/ruigelwang/p/11257752 ...
- HDU - 2018杭电ACM集训队单人排位赛 - 1 - Problem C. 狙击敌人
Problem C. 狙击敌人 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) ...
- HDU杭电OJ经典100题2000-2099_Java版详细题解(持续更新)
今年寒假打算用Java把杭电2000-2099全部AC(现在持续更新),如下是题目链接,之后是我的题解,全部做完后我会把所有AC的题解打包上传的 题号 题名 题号 题名 2000 ASCII码排序 2 ...
- 杭电OJ分类题目(1)
原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(1) HDU Introduction HDU ...
- 杭电OJ分类题目(4)-Graph
原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(4) HDU Graph Theory - U ...
- 杭电OJ分类题目(3)
原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(3) HDU Computational Ge ...
最新文章
- JAVA实现斐波那契数列问题(《剑指offer》)
- 《构建之法》需求分析 读书笔记 Week6
- Codeforces 1188
- java panel 左对齐,将Shape的中心与JPanel的中心对齐 - java
- 网络通信之 字节序转换原理与网络字节序、大端和小端模式
- java数据传递给安卓_Android数据传递的五种方法汇总
- Matlab中左除和右除
- Android IOS WebRTC 音视频开发总结(十一)-- stunturn部署
- Native Application 开发详解
- SQL Server 2005登录名,用户名,角色,架构之间的关系
- python行业缺口_根据缺口的模式选股买股票,python 学习代码
- pythonsys用法_Python 使用sys模块
- pytorch与resnet(六) 预训练模型使用的场景
- ascii c语言打印出来,C语言打印出ASCII码表,怎么写?
- mysql中表结构是什么_查询MySQL数据库中表结构
- CasADi——数据类型详解与基本操作介绍
- windows操作系统服务器 网卡速度关联项
- 肠道菌群失调与炎症性肠病的关联
- Input 输入调出数字输入
- 数据分区与放置策略解析_数据策略好数据与坏数据