题目传送门

 /*
BFS:倒水问题,当C是奇数时无解。一共有六种情况,只要条件符合就入队,我在当该状态vised时写了continue
结果找了半天才发现bug,泪流满面。。。。(网上找份好看的题解都难啊)
*/
/************************************************
Author :Running_Time
Created Time :2015-8-4 10:54:16
File Name :HDOJ_1495.cpp
************************************************/ #include <cstdio>
#include <algorithm>
#include <iostream>
#include <sstream>
#include <cstring>
#include <cmath>
#include <string>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <bitset>
#include <cstdlib>
#include <ctime>
using namespace std; #define lson l, mid, rt << 1
#define rson mid + 1, r, rt << 1 | 1
typedef long long ll;
const int MAXN = 1e2 + ;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + ;
struct Cola {
int a, b, c, step;
};
bool vis[MAXN][MAXN];
int A, B, C; void BFS(void) {
memset (vis, false, sizeof (vis));
queue<Cola> Q; Q.push ((Cola) {, , C, }); vis[][] = true;
while (!Q.empty ()) {
Cola c = Q.front (); Q.pop ();
if ((c.a == c.b && c.a == C / ) || (c.a == c.c && c.a == C / ) || (c.b == c.c && c.b == C / )) {
printf ("%d\n", c.step); return ;
}
if (c.c > ) { //c -> a
int t = min (c.c, A - c.a);
if (!vis[c.a+t][c.b]) {
vis[c.a+t][c.b] = true; Q.push ((Cola) {c.a+t, c.b, c.c-t, c.step + });
}
}
if (c.c > ) { //c -> b
int t = min (c.c, B - c.b);
if (!vis[c.a][c.b+t]) {
vis[c.a][c.b+t] = true; Q.push ((Cola) {c.a, c.b+t, c.c-t, c.step + });
}
}
if (c.a > ) { //a -> c
int t = min (c.a, C - c.c);
if (!vis[c.a-t][c.b]) {
vis[c.a-t][c.b] = true; Q.push ((Cola) {c.a-t, c.b, c.c+t, c.step + });
}
}
if (c.b > ) { //b -> c
int t = min (c.b, C - c.c);
if (!vis[c.a][c.b-t]) {
vis[c.a][c.b-t] = true; Q.push ((Cola) {c.a, c.b-t, c.c+t, c.step + });
}
}
if (c.a > ) { //a -> b
int t = min (c.a, B - c.b);
if (!vis[c.a-t][c.b+t]) {
vis[c.a-t][c.b+t] = true; Q.push ((Cola) {c.a-t, c.b+t, c.c, c.step + });
}
}
if (c.b > ) { //b -> a
int t = min (c.b, A - c.a);
if (!vis[c.a+t][c.b-t]) {
vis[c.a+t][c.b-t] = true; Q.push ((Cola) {c.a+t, c.b-t, c.c, c.step + });
}
}
} puts ("NO");
} int main(void) { //HDU 1495 非常可乐
while (scanf ("%d%d%d", &C, &A, &B) == ) {
if (!C && !A && !B) break;
if (C & ) {
puts ("NO"); continue;
}
BFS ();
} return ;
}

BFS(倒水问题) HDU 1495 非常可乐的更多相关文章

  1. HDU 1495 非常可乐(BFS倒水问题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495 题目大意:只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S<101) ...

  2. HDU 1495 非常可乐【BFS/倒水问题】

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

  3. HDU 1495 非常可乐(数论,BFS)

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

  4. HDU 1495 非常可乐 BFS 搜索

    http://acm.hdu.edu.cn/showproblem.php?pid=1495 题目就不说了, 说说思路! 倒可乐 无非有6种情况: 1. S 向 M 倒 2. S 向 N 倒 3. N ...

  5. HDU - 1495 非常可乐 【BFS】

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1495 思路 首先 如果可乐的体积 是奇数 那么是无解的 然后 如果能够得到两杯 都是一般容量的可乐 那 ...

  6. HDU 1495 非常可乐【BFS】

    题目链接:https://vjudge.net/problem/HDU-1495 转载于:https://www.cnblogs.com/ECJTUACM-873284962/p/6750320.ht ...

  7. HDU 1495 非常可乐 bfs 难度:1

    http://acm.hdu.edu.cn/showproblem.php?pid=1495 第三个杯子的盛水量可由前两个杯子得到,而前两个杯子状态总数在100*100以内,穷举可实现 #includ ...

  8. (step4.2.5)hdu 1495(非常可乐——BFS)

    题目大意:输入三个整数 a,b,c.   a : 可乐瓶的容量,b: 甲杯的容量 ,c: 乙杯的容量.问能否用这三个被来实现饮料的平分???如果可以输出倒饮料的次数, 否则输出NO 解题思路:BFS ...

  9. HDU 1495 非常可乐 BFS搜索

    题意:有个为三个杯子(杯子没有刻度),体积为s,n,m,s=m+n, 刚开始只有体积为s的杯子装满可乐,可以互相倒,问你最少的次数使可乐均分,如果没有结果,输出-1; 分析:直接互相倒就完了,BFS模 ...

随机推荐

  1. JS中的双等和全等号比较机制

    JavaScript中的"==" 和 "===" 的用法: "=="判断相等的隐式转换机制 1. 判断是否有NaN(not a Number ...

  2. Application特征

    1.位置:服务器内存,执行速度快2.使用范围:整个应用程序3.类型:任意类型4.声明周期:应用程序开始创建到销毁

  3. 【VBA研究】工作表自己主动筛选模式检測

    作者:iamlaosong 用VBA程序处理Excel数据文件.用户的数据文件有时处于自己主动筛选模式,往往导致数据处理不对.为此,须要检測工作表是否处于该模式,假设是,则去掉自己主动筛选.语句例如以 ...

  4. linux网络结构体

    一 链路层: (1)局域网(以太网ethernet): *struct eth_header:以太网头部. (ethernet/eth.c) *struct net_device:每一个网络设备都用这 ...

  5. js类继承扩展super

    相应的资料https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/super 例子: class Pol ...

  6. Java VS .NET:Java与.NET的特点对比 单点登录(SSO)的设计

    一.前言 为什么要写Java跟.NET对比? .NET出生之后就带着Java的影子.从模仿到创新,.NET平台也越来越成熟.他们不同的支持者也经常因为孰弱孰强的问题争论不休.但是本文并不是为了一分高下 ...

  7. PAT Rational Arithmetic (20)

    题目描写叙述 For two rational numbers, your task is to implement the basic arithmetics, that is, to calcul ...

  8. websphere修改jsp不生效的解决办法

    最近在给客户部署系统后,进行UAT测试的时候,发现一些小问题(是一些jsp文件),改好后,就进行增量发布了,可是后来在页面刷新的时候,怎么都是显示不出来效果,后来就把服务websphere重启后,页面 ...

  9. 以太网接口TCP/IP协议介绍,说的很容易懂了

      以太网接口TCP/IP协议介绍,说的很容易懂了  TCP/IP协议,或称为TCP/IP协议栈,或互联网协议系列. TCP/IP协议栈(按TCP/IP参考模型划分) 应用层 FTP SMTP HTT ...

  10. docker 基本指令

    sudo docker info 查看docker状态. jiqing@ThinkPad:~$ sudo docker info [sudo] password for jiqing: Contain ...