hdu 1495 非常可乐(bfs)
来源:互联网 发布:苏州seo外包 编辑:程序博客网 时间:2024/05/20 19:48
大家一定觉的运动以后喝可乐是一件很惬意的事情,但是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 3
4 1 3
0 0 0
Sample Output
NO
3
6种情况,一道写起来有点麻烦的水题。
#include <iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;int n,m ,k;struct node{ int x,y,z,step; bool operator <(const node &rhs) const { return step>rhs.step; }};int vis[110][110][110];priority_queue<node> que;int flag;int bfs(){ while(!que.empty()) { node head = que.top(); que.pop(); for(int i=1;i<=6;i++) { int xx=head.x; int yy=head.y; int zz=head.z; int ss=head.step; // printf("%d %d %d %d\n",xx,yy,zz,ss ); int a,b,c; if(i==1) { if(xx>m-yy) { a=xx-(m-yy); b=m; c=zz; } else { a=0; b=xx+yy; c=zz; } } if(i==2) { if(xx>k-zz) { a=xx-(k-zz); b=yy; c=k; } else { a=0; b=yy; c=zz+xx; } } if(i==3) { if(yy>n-xx) { a=n; b=yy-(n-xx); c=zz; } else { a=xx+yy; b=0; c=zz; } } if(i==4) { if(yy>k-zz) { a=xx; b=yy-(k-zz); c=k; } else { a=xx; b=0; c=yy+zz; } } if(i==5) { if(zz>n-xx) { a=n; b=yy; c=zz-(n-xx); } else { a=xx+zz; b=yy; c=0; } } if(i==6) { if(zz>m-yy) { a=xx; b=m; c=zz-(m-yy); } else { a=xx; b=yy+zz; c=0; } } if(!vis[a][b][c]) que.push(node{a,b,c,ss+1}); vis[a][b][c]=1; if((a==b&&c==0)||(a==c&&b==0)||(b==c&&a==0)) { flag=1; return ss+1; } } } return 0;}int main(){ while(scanf("%d%d%d",&n,&m,&k)!=EOF) { while(!que.empty()) que.pop(); if(n==0&&m==0&&k==0) break; flag=0; memset(vis,0,sizeof(vis)); que.push((node){n,0,0,0}); vis[n][0][0]=1; int a=bfs(); if(a==0) printf("NO\n"); else printf("%d\n", a); }}
0 0
- hdu 1495 非常可乐(BFS)
- HDU 1495非常可乐(BFS)
- HDU 1495 非常可乐 (BFS)
- HDU 1495 非常可乐(BFS & STL)
- HDU 1495 非常可乐(bfs)
- HDU 1495 非常可乐(BFS+模拟)
- HDU 1495 非常可乐(BFS)
- HDU - 1495 非常可乐(BFS)
- HDU 1495 非常可乐 (BFS)
- HDU 1495 非常可乐(BFS)
- HDU-1495-非常可乐(BFS/GCD)
- hdu 1495 非常可乐(bfs)
- HDU 1495 非常可乐(BFS + 模拟)
- HDU 1495 非常可乐 (BFS)
- HDU 1495 非常可乐(bfs)
- HDU 1495 非常可乐(BFS)
- HDU.1495 非常可乐 (BFS)
- 【HDU 1495】非常可乐(BFS)
- Android ImageView 图片浏览
- secuteCRT使用技巧
- 计算机网络Ip地址分类、端口、常用命令整理
- CCF201604-1 折点计数(100分)
- html问题思考
- hdu 1495 非常可乐(bfs)
- 产品经理必备技能之数据分析入门篇
- Python经典练习100例(上)
- How tomcat works——8 类加载器(Loader)
- windows服务的安装卸载,修改执行路径(转)
- H5保存并读取临时数据
- Android Dagger2
- maven(12)------Nexus内置仓库和配置仓库组
- h5多媒体的应用