HDU 1495 非常可乐
非常可乐Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2874 Accepted Submission(s): 1157Problem Description大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S<101)毫升 (正好装满一瓶) ,它们三个之间可以相互倒可乐 (都是没有刻度的,且 S==N+M,101>S>0,N>0,M>0) 。聪明的ACMER你们说他们能平分吗?如果能请输出倒可乐的最少的次数,如果不能输出"NO"。Input三个整数 : S 可乐的体积 , N 和 M是两个杯子的容量,以"0 0 0"结束。Output如果能平分的话请输出最少要倒的次数,否则输出"NO"。Sample Input7 4 34 1 30 0 0Sample OutputNO3AuthorseeyouSource“2006校园文化活动月”之“校庆杯”大学生程序设计竞赛暨杭州电子科技大学第四届大学生程序设计竞赛RecommendLL解题思路:每次倒的时候有6种倒法,即a->b,a->c,b->a,b->c,c->a,c->b,分倒满和倒不满两种情况讨论,记录下已出现的状态,避免重复搜索,然后BFS就可以了。[cpp]#include<iostream>#include<cstring>#include<queue>using namespace std;bool visit[105][105][105];typedef struct cola{int a,b,c,v;cola(){a=b=c=v=0;}};bool pre(cola x,int y){if(x.a==y/2&&x.b==y/2||x.c==y/2&&x.a==y/2||x.c==y/2&&x.b==y/2)return true;return false;}int BFS(cola x,int a,int b,int k){cola now,temp;queue<cola> c;c.push(x);while(!c.empty()){now=c.front();c.pop();if(now.b<a&&now.a>0){temp.c=now.c;temp.v=now.v+1;if(now.a>a-now.b){temp.a=now.a+now.b-a;temp.b=a;}else{temp.b=now.b+now.a;temp.a=0;}if(pre(temp,k))return temp.v;if(!visit[temp.a][temp.b][temp.c]){visit[temp.a][temp.b][temp.c]=true;c.push(temp);}}if(now.c<b&&now.a>0){temp.v=now.v+1;temp.b=now.b;if(now.a>b-now.c){temp.a=now.a+now.c-b;temp.c=b;}else{temp.c=now.c+now.a;temp.a=0;}if(pre(temp,k))return temp.v;if(!visit[temp.a][temp.b][temp.c]){visit[temp.a][temp.b][temp.c]=true;c.push(temp);}}if(now.a<k&&now.b>0){temp.c=now.c;temp.v=now.v+1;if(now.b>k-now.a){temp.b=now.b+now.a-k;temp.a=k;}else{temp.a=now.a+now.b;temp.b=0;}if(pre(temp,k))return temp.v;if(!visit[temp.a][temp.b][temp.c]){visit[temp.a][temp.b][temp.c]=true;c.push(temp);}}if(now.c<b&&now.b>0) 补充:软件开发 , C++ ,
上一个:HDU 3047 Zjnu Stadium
下一个:有序的结构体数组
- 更多C/C++疑问解答:
- 关于c++的cout输出的问题。
- 在学校里学过C和C++,不过学的很一般,现在自学C#,会不会很难?
- 全国计算机二级C语言笔试题
- 已知某树有2个2度结点,3个3度结点,4个4度结点,问有几个叶子结点?
- c++数据结构内部排序问题,整数排序
- 2012九月计算机二级C语言全国题库,,急求急求
- 如果assert只有一个字符串作为参数,是什么意思呢?
- C语言中,哪些运算符具有左结合性,哪些具有右结合性,帮忙总结下,谢谢了!
- 为什么用结构体编写的程序输入是,0输不出来啊~~~
- 将IEEE—754的十六进制转化为十进制浮点类型,用C或C++都行,多谢各位大侠啊,非常感谢!
- 为什么这个程序求不出公式?
- 这个链表倒置的算法请大家分析下
- c语言函数库调用
- C语言unsigned int纠错
- C语言快排求解啊