HDOJ--1495--非常可乐(隐式图)

来源:互联网 发布:c语言数字字符怎么表示 编辑:程序博客网 时间:2024/05/20 19:15

非常可乐

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 7996    Accepted Submission(s): 3195


Problem 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 Input
7 4 34 1 30 0 0
 

Sample Output
NO3
 
思路:这道题跟NYOJ上的三个水杯那道题是很像的.都是隐式图,需要自己构图,然后利用三重for循环便利所有的情况。第一次到达到那种状况的情况下肯定就是最少的次数。
ac代码:
#include<stdio.h>#include<string.h>#include<queue>#include<algorithm>using namespace std;struct node{int V[4],time; };int a[4],vis[110][110],adv;int jud(node temp){//用来判断是否满足题目中的跳出条件。 int a=temp.V[0],b=temp.V[1],c=temp.V[2];if(a==adv&&b==adv)return 1;if(a==adv&&c==adv)return 1;if(b==adv&&c==adv)return 1;return 0; }void bfs(){//对自己所构造的隐式图进行深搜。 memset(vis,0,sizeof(vis));node now,next;queue<node>q;now.V[0]=a[0];now.V[1]=0;now.V[2]=0;now.time=0;vis[a[0]][0]=1;//标记已经出现过的情况。 q.push(now);while(!q.empty()){now=q.front();q.pop();for(int i=0;i<3;i++){//双重for循环遍历所有的情况; for(int j=0;j<3;j++)if(i!=j){next=now;if(now.V[i]+now.V[j]>a[j]){next.V[i]=now.V[i]+now.V[j]-a[j];next.V[j]=a[j];next.time++;}else{next.V[i]=0;next.V[j]=now.V[i]+now.V[j];next.time++;}if(!vis[next.V[0]][next.V[1]]){vis[next.V[0]][next.V[1]]=1;q.push(next);if(jud(next)){printf("%d\n",next.time);return ;}}}}}printf("NO\n");} int main(){while(scanf("%d%d%d",&a[0],&a[1],&a[2]),(a[0]||a[1]||a[2])){adv=a[0]/2;if(a[0]%2){//题目中的意思是平分,那么如果是奇数就肯定不能平分了。 printf("NO\n");continue ;}elsebfs();}return 0;} 



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝占空间太大怎么办 淘宝占用空间大怎么办 ipad空间不够用怎么办 ipadmini密码忘了怎么办 旧ipad特别卡怎么办 苹果ipad反应慢怎么办 手机垃圾多了怎么办 ipad2内存过低怎么办 苹果平板ipad内存不足怎么办 手机dns配置错误怎么办 蓝牙已停止运行怎么办 ipad看电视闪退怎么办 ipad为什么看电视会闪退怎么办 微淘直播延迟怎么办 手机淘宝进群领金币怎么办 做淘客冲销量停止淘客后怎么办 微信中零钱提现怎么办 淘宝买家不签收怎么办 小龙虾没人下单怎么办 淘宝直播不浮现怎么办 淘宝直播看不了怎么办 理财客户说没钱怎么办 投资不给钱了怎么办 工作中遇到挫折怎么办 手机qq出现异常怎么办 农行卡出现异常怎么办 淘宝长期不发货怎么办 快递一直不发货怎么办 申请退款被拒绝怎么办 淘宝的垃圾短信怎么办 如果淘宝不退款怎么办 客服遇到客户骂怎么办 商场保证金不退怎么办 淘宝被投诉侵权怎么办 电脑wifi链接不见了怎么办 无线设备坏了怎么办 电脑网页默认了怎么办 淘宝商家停止服务怎么办? 淘宝商家停止了怎么办 做淘宝不会美工怎么办 做客服打字慢怎么办