M - 非常可乐

  1 #include <string.h>
  2 #include <stdio.h>
  3 #include <queue>
  4 using namespace std;
  5 
  6 int s,n,m;
  7 int vis[105][105][105];
  8 
  9 struct node
 10 {
 11     int s,n,m,step;
 12 };
 13 int check(int x,int y,int z)//平分条件
 14 {
 15     if(x == 0 && y == z)
 16         return 1;
 17     if(y == 0 && x == z)
 18         return 1;
 19     if(z == 0 && x == y)
 20         return 1;
 21     return 0;
 22 }
 23 
 24 int bfs()
 25 {
 26     queue<node> Q;
 27     node a,next;
 28     a.s = s;
 29     a.n = 0;
 30     a.m = 0;
 31     a.step = 0;
 32     vis[s][0][0] = 1;
 33     Q.push(a);
 34     while(!Q.empty())
 35     {
 36         a = Q.front();
 37         Q.pop();
 38         if(check(a.s,a.n,a.m))
 39             return a.step;
 40         if(a.n)//当n杯中还有
 41         {
 42             if(a.n>s-a.s)//将n杯倒入s杯中能将s杯倒满
 43             {
 44                 next = a;
 45                 next.n = next.n-(s-a.s);
 46                 next.s = s;
 47                 if(!vis[next.s][next.n][next.m])
 48                 {
 49                     next.step = a.step+1;
 50                     Q.push(next);
 51                     vis[next.s][next.n][next.m] = 1;
 52                 }
 53             }
 54             else//将n杯倒入s杯中不能将s杯倒满
 55             {
 56                 next = a;
 57                 next.s = next.n+next.s;
 58                 next.n = 0;
 59                 if(!vis[next.s][next.n][next.m])
 60                 {
 61                     next.step = a.step+1;
 62                     Q.push(next);
 63                     vis[next.s][next.n][next.m] = 1;
 64                 }
 65             }
 66             if(a.n>m-a.m)//将n杯倒入m杯中能将m杯倒满
 67             {
 68                 next = a;
 69                 next.n = next.n-(m-a.m);
 70                 next.m =  m;
 71                 if(!vis[next.s][next.n][next.m])
 72                 {
 73                     next.step = a.step+1;
 74                     Q.push(next);
 75                     vis[next.s][next.n][next.m] = 1;
 76                 }
 77             }
 78             else//将n杯倒入m杯中不能将m杯倒满
 79             {
 80                 next = a;
 81                 next.m = next.n+next.m;
 82                 next.n = 0;
 83                 if(!vis[next.s][next.n][next.m])
 84                 {
 85                     next.step = a.step+1;
 86                     Q.push(next);
 87                     vis[next.s][next.n][next.m] = 1;
 88                 }
 89             }
 90         }
 91         if(a.m)//同上
 92         {
 93             if(a.m>s-a.s)
 94             {
 95                 next = a;
 96                 next.m = next.m-(s-a.s);
 97                 next.s = s;
 98                 if(!vis[next.s][next.n][next.m])
 99                 {
100                     next.step = a.step+1;
101                     Q.push(next);
102                     vis[next.s][next.n][next.m] = 1;
103                 }
104             }
105             else
106             {
107                 next = a;
108                 next.s = next.m+next.s;
109                 next.m = 0;
110                 if(!vis[next.s][next.n][next.m])
111                 {
112                     next.step = a.step+1;
113                     Q.push(next);
114                     vis[next.s][next.n][next.m] = 1;
115                 }
116             }
117             if(a.m>n-a.n)
118             {
119                 next = a;
120                 next.m = next.m-(n-a.n);
121                 next.n =  n;
122                 if(!vis[next.s][next.n][next.m])
123                 {
124                     next.step = a.step+1;
125                     Q.push(next);
126                     vis[next.s][next.n][next.m] = 1;
127                 }
128             }
129             else
130             {
131                 next = a;
132                 next.n = next.m+next.n;
133                 next.m = 0;
134                 if(!vis[next.s][next.n][next.m])
135                 {
136                     next.step = a.step+1;
137                     Q.push(next);
138                     vis[next.s][next.n][next.m] = 1;
139                 }
140             }
141         }
142         if(a.s)//同上
143         {
144             if(a.s>n-a.n)
145             {
146                 next = a;
147                 next.s = next.s-(n-a.n);
148                 next.n = n;
149                 if(!vis[next.s][next.n][next.m])
150                 {
151                     next.step = a.step+1;
152                     Q.push(next);
153                     vis[next.s][next.n][next.m] = 1;
154                 }
155             }
156             else
157             {
158                 next = a;
159                 next.n = next.s+next.n;
160                 next.s = 0;
161                 if(!vis[next.s][next.n][next.m])
162                 {
163                     next.step = a.step+1;
164                     Q.push(next);
165                     vis[next.s][next.n][next.m] = 1;
166                 }
167             }
168             if(a.s>m-a.m)
169             {
170                 next = a;
171                 next.s = next.s-(m-a.m);
172                 next.m =  m;
173                 if(!vis[next.s][next.n][next.m])
174                 {
175                    next.step = a.step+1;
176                     Q.push(next);
177                     vis[next.s][next.n][next.m] = 1;
178                 }
179             }
180             else
181             {
182                 next = a;
183                 next.m = next.m+next.s;
184                 next.s = 0;
185                 if(!vis[next.s][next.n][next.m])
186                 {
187                     next.step = a.step+1;
188                     Q.push(next);
189                     vis[next.s][next.n][next.m] = 1;
190                 }
191             }
192         }
193     }
194     return 0;
195 }
196 
197 int main()
198 {
199     int ans;
200     while(~scanf("%d%d%d",&s,&n,&m))
201     {
202         if(s ==0 && n ==0 &&m==0)
203             break;
204         if(s%2)
205         {
206             printf("NO\n");
207             continue;
208         }
209         memset(vis,0,sizeof(vis));
210         ans = bfs();
211         if(ans)
212             printf("%d\n",ans);
213         else
214             printf("NO\n");
215     }
216     return 0;
217 }

 

转载于:https://www.cnblogs.com/ouyang_wsgwz/p/8971462.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367112.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ArrayList和Vector的区别

这两个类都实现了List接口&#xff08;List接口继承了Collection接口&#xff09;&#xff0c;他们都是有序集合&#xff0c;即存储在这两个集合中的元素的位置都是有顺序的&#xff0c;相当于一种动态的数组&#xff0c;我们以后可以按位置索引号取出某个元素&#xff0c;并且…

【luogu1613】跑路 - 倍增+Floyd

题目描述 小A的工作不仅繁琐&#xff0c;更有苛刻的规定&#xff0c;要求小A每天早上在6&#xff1a;00之前到达公司&#xff0c;否则这个月工资清零。可是小A偏偏又有赖床的坏毛病。于是为了保住自己的工资&#xff0c;小A买了一个十分牛B的空间跑路器&#xff0c;每秒钟可以跑…

python哲学翻译_Python

正在学习Python开发语言的用户&#xff0c;可能会在学习过程中听说过讲师说过Python有一段有关于Python的哲学理念机设计思想&#xff0c;在Python里输入“import this”命令就会出现一段英文格言&#xff0c;这里我们把Python的这段格言的双语版分享出来&#xff0c;帮助正在学…

如何创建线程?

Java并发编程&#xff1a;如何创建线程&#xff1f; 在前面一篇文章中已经讲述了在进程和线程的由来&#xff0c;今天就来讲一下在Java中如何创建线程&#xff0c;让线程去执行一个子任务。下面先讲述一下Java中的应用程序和进程相关的概念知识&#xff0c;然后再阐述如何创建线…

经典MapReduce作业和Yarn上MapReduce作业运行机制

一、经典MapReduce的作业运行机制 如下图是经典MapReduce作业的工作原理&#xff1a; 1.1 经典MapReduce作业的实体 经典MapReduce作业运行过程包含的实体&#xff1a; 客户端&#xff0c;提交MapReduce作业。JobTracker&#xff0c;协调作业的运行。JobTracker是一个Java应用程…

根据Linux2.6.26源码分析进程模型

1.关于进程 1.1进程的概念 进程是正在运行的程序实体&#xff0c;并且包括这个运行的程序中占据的所有系统资源&#xff0c;比如说CPU(寄存器)&#xff0c;IO,内存&#xff0c;网络资源等。很多人在回答进程的概念的时候&#xff0c;往往只会说它是一个运行的实体&#xff0c;而…

socket编程开发

1.socket是什么&#xff1f; Socket是应用层与TCP/IP协议族通信的中间软件抽象层&#xff0c;它是一组接口。在设计模式中&#xff0c;Socket其实就是一个门面模式&#xff0c; 它把复杂的TCP/IP协议族隐藏在Socket接口后面&#xff0c;对用户来说&#xff0c;一组简单的接口就…

一个前端岗位电话面试所带来的问题的思考

这绝对不是一篇技术文&#xff0c;如果你不喜欢&#xff0c;也请不要喷&#xff0c;你可以看看都有哪些问题&#xff0c;当然&#xff0c;在这里你可能得不到问题的答案&#xff0c;不懂的你可能需要自己去百度&#xff0c;也可以在下面留言交流&#xff0c;我已经声明了&#…

Spring MVC –揭秘了@RequestBody和@ResponseBody

在这篇文章中&#xff0c;我想对Spring MVC进行一些深入的探讨&#xff0c;以揭示将请求转换为参数对象后在幕后发生的情况&#xff0c;反之亦然。 在开始之前&#xff0c;我想解释这些注释的目的。 RequestBody和ResponseBody是做什么用的&#xff1f; 它们是spring mvc框架的…

python大作业外星人入侵_【python3小白上路系列】外星人入侵——开始

早起的周日&#xff0c;今日阴天&#xff0c;老爸生日快乐~开始项目首先创建一个空的Pygame窗口&#xff0c;供后面用来绘制游戏元素&#xff0c;如飞船和外星人。我们还将让这个游戏响应用户输入、设置背景色以及加载飞船图像。1.1.1 创建Pygame窗口以及相应用户输入首先&…

Codeforces 975D Ghosts 【math】

打了两次cf里的比赛&#xff0c;发现cf比较喜欢考数学题。一开始看到这道题没有思路&#xff0c;因为总想dp&#xff0c;图论&#xff0c;贪心这些东西。如果下次再没有思路&#xff0c;可以从数学的角度入手。 题解说的比较清楚&#xff1a; 2018.9.4又看了遍这题&#xff0c;…

前后台分离之数据模拟

在前后端分离的项目中&#xff0c;前后端约定好接口以后&#xff0c;就开始进入各自的开发阶段了&#xff0c;这时候我们前端不可避免的就需要进行数据模拟&#xff0c;那么怎么进行数据模拟呢&#xff1f;我觉得有两种&#xff1a; 在 客户端 模拟数据&#xff0c;也就是在我…

碎玻璃:诊断生产Cassandra问题

我刚刚在健康市场科学&#xff08;HMS&#xff09;成立二周年之际&#xff0c;我们几乎一直在这里与Cassandra一起工作。 那时&#xff0c;我们遇到的问题很少。 就像我曾经使用过的其他几种技术一样&#xff0c;Cassandra“行之有效”。 但是&#xff0c;就像我曾经使用过的*…

java 一维数组_java基础 ---- 一维数组

为什么要使用数组&#xff1a; 因为不使用数组计算多个变量的时候太繁琐&#xff0c;不利于数据的处理。-------- 数组也是一个变量&#xff0c;是存储一组相同类型的变量声明一个变量就是在内存中划出一块合适的空间声明一个数组就是在内存中划出一块连续的空间数组长度就是…

四则运算2

作业描述&#xff1a; 悲催的二柱子接到了老师要求给软件增加一些小小的功能&#xff0c;具体要求如下&#xff1a; 1、除了整数以外&#xff0c;还要支持真分数的四则运算&#xff08;需要验证结果的正确性&#xff09;&#xff1b; 2、一次出的题目避免相互重复&#xff1b; …

Java中的策略设计模式-示例教程

策略模式是行为设计模式之一 。 当我们对一个特定任务有多种算法&#xff0c;并且客户端决定在运行时使用的实际实现时&#xff0c;将使用策略模式。 策略模式也称为策略模式 。 我们定义了多种算法&#xff0c;并让客户端应用程序将算法用作参数。 此模式的最佳示例之一是采用…

MySQL数据库主从复制

使用gtid &#xff08;也需要开启binlog日志&#xff09; CHANGE MASTER TO MASTER_HOST’192.168.95.11’, MASTER_USER’mysql12’, MASTER_PASSWORD’mysql12’,MASTER_AUTO_POSITION 1; 使用binlog CHANGE MASTER TO MASTER_HOST’192.168.95.12’, MASTER_USER’mysql…

vue-cli 3.0 使用全过程讲解

2018年8月13日更新&#xff1a; 恭祝vue-cli 3.0.0 官方正式版发布&#xff0c;此后我们可以正式在3.0环境下进行项目开发了。 此文发布以来受到了很多朋友的阅读&#xff0c;但我深知这篇文章还是很浅显的&#xff0c;因此&#xff0c;我会在后续的 3.0 使用过程中分享我遇到…

java反射机制在spring_Java反射机制在Spring IOC中的应用

IOC&#xff1a;即“控制反转”&#xff0c;不是什么技术&#xff0c;而是一种思想。使用IOC意味着将你设计好的对象交给容器控制&#xff0c;而不是传统的在你的对象内部直接控制。本篇文章主要讲解一下IOC底层实现的原理(反射)&#xff0c;Bean容器的实现&#xff0c;就不对I…

【图像处理】Haar-like特征

特征提取的原理、代码等&#xff1b; 如果是白黑白&#xff0c;是减去一个黑的还是2个黑的&#xff0c;网上有不同的说法&#xff1b;应该需要看原论文了。 论文原文 The sum of the pixels which lie within the white rectangles are subtracted from the sum of pixels in t…