USACO Mother's Milk
来源:互联网 发布:蓝牙串口调试助手源码 编辑:程序博客网 时间:2024/04/30 22:57
题意 :有3个杯子,问当a杯子为空时,c杯子能够装多少种体积的水
思路 :倒水问题,有广搜,对于当前,接下来有6种状态:a到给b,a到给c ,c到给b,c到给a,b到给a, b到给c。每一种状态又有两种情况:能装满和不能装满。这里还要注意一点就是必须判断重复,即防止a倒给b,然后b再倒给a这种情况的发生!
这里还有一个节省代码的技巧:因为情况很多,一开始我使用6个if,结果代码写的老长,十分不方便debug。我们可以使用for循环,在控制是哪个杯子时我是用了模运算,具体实现请看代码,我觉得写的还不错哦!
代码:
#include <iostream>#include <cstring>#include <queue>#include <algorithm>#include <cstdio>#define N 29using namespace std;bool v[N][N];typedef struct{ int w[3];}milk;int bfs( milk start, int *ans ){ int times = 0; milk now; now.w[0] = now.w[1] = 0; now.w[2] = start.w[2]; queue <milk> q; memset( v, false, sizeof( v ) ); v[0][0] = true; q.push( now ); while( !q.empty() ) { now = q.front(); q.pop(); milk t; for( int i = 0; i < 3; i++ ) { if( now.w[i] > 0 ) { for( int j = i + 1; j < i + 3; j++ ) { t = now; if( now.w[i] >= start.w[j%3] - now.w[j%3] ) { t.w[i] = now.w[i] - ( start.w[j%3] - now.w[j%3] ); t.w[j%3] = start.w[j%3]; } else { t.w[i] = 0; t.w[j%3] = now.w[j%3] + now.w[i]; } if( !v[t.w[0]][t.w[1]] ) { if( t.w[0] == 0 ) { ans[times++] = t.w[2]; } v[t.w[0]][t.w[1]] = true; q.push( t ); } } } } } return times;}int main(){ freopen( "milk3.in", "r", stdin ); freopen( "milk3.out", "w", stdout ); milk start; while( cin >> start.w[0] >> start.w[1] >> start.w[2] ) { int ans[N]; int times = bfs( start, ans ); sort( ans, ans + times ); for( int i = 0; i < times; i++ ) { cout << ans[i] << ' '; } cout << start.w[2] << '\n'; } return 0;}
0 0
- Mother's Milk(usaco)
- usaco Mother's Milk
- USACO:Mother's Milk
- USACO-Mother's Milk
- USACO Mother's Milk
- USACO Mother's Milk
- USACO Mother's Milk
- USACO: Mother's Milk
- USACO Mother's Milk
- usaco Mother's Milk
- USACO/Mother's Milk (DFS)
- USACO Mother's Milk [ANALYSIS]
- [usaco]1.4 Mother’s Milk
- [USACO]Mother's Milk【JAVA】
- USACO 1.4 Mother's Milk
- 【USACO】Mother's Milk(搜索)
- USACO 1.4 Mother's Milk
- USACO 1.4-Mother's Milk
- jsp 文本框不可编辑,禁止文本框的输入,JSP页面中的文本框只显示内容,而用户无法修改
- 陌上相逢,拾取馨暖
- 巧用dimens适配多个分辨率
- 利用adb工具android真机环境运行cpp(无需root)
- MFC API——》PreCreateWindow
- USACO Mother's Milk
- hadoop测试
- 压缩感知跟踪(一)
- Spring MVC 入门示例
- perl常用的内置特殊变量
- 《Software Design中文版01》
- 新买的枕头
- 模板使用随笔
- MyEclipse10 安装SVN插件及SVN插件在MyEclipse10下使用方法