计蒜客 无脑博士 bfs
来源:互联网 发布:北京阿里云招聘 编辑:程序博客网 时间:2024/05/01 01:03
题目链接无脑博士的试管们
思路:直接模拟倒水过程即可,但是需要记忆判断当前的情况是否已经处理过。dfs和bfs都ok
AC代码
#include <cstdio>#include <cmath>#include <cctype>#include <algorithm>#include <cstring>#include <utility>#include <string>#include <iostream>#include <map>#include <set>#include <vector>#include <queue>#include <stack>using namespace std;#pragma comment(linker, "/STACK:1024000000,1024000000") #define eps 1e-10#define inf 0x3f3f3f3f#define PI pair<int, int> typedef long long LL;const int maxn = 20 + 5;int dp[maxn][maxn];set<int>ans;int v[3];void dfs(int a, int b, int c) {//printf("%d %d %d\n", a, b, c);if(dp[a][b]) return;dp[a][b] = 1;if(a == 0) ans.insert(c);//倒水 for(int i = 0; i < 3; ++i) {for(int j = 0; j < 3; ++j) {if(i == j) continue;int u[3] = {a, b, c};int pour = min(u[i], v[j]-u[j]);if(pour == 0) continue;u[i] -= pour;u[j] += pour;dfs(u[0], u[1], u[2]);}}}int main() {while(scanf("%d%d%d", &v[0], &v[1], &v[2]) == 3) {ans.clear();memset(dp, 0, sizeof(dp));dfs(0, 0, v[2]);for(set<int>::iterator it = ans.begin(); it != ans.end(); ++it) {if(it == ans.begin()) printf("%d", *it);else printf(" %d", *it);}printf("\n");}return 0;}
如有不当之处欢迎指出!
0 0
- 计蒜客 无脑博士 bfs
- 计蒜客 无脑博士的试管们 (bfs+模拟)
- 计蒜客 无脑博士的试管们
- 计蒜客--第31题:无脑博士的试管们
- 计蒜客 难题题库 031 无脑博士的试管们
- 无脑博士的试管们(计蒜客)
- 无脑博士的试管们
- 无脑博士的试管们
- 计蒜客————无脑博士的试管们
- 计算客(无脑博士的试管们)
- 1012 - Guilty Prince(无脑bfs)
- 无向图+BFS
- 博士
- 博士
- 无向图创建+BFS+DFS(整合)
- NYOJ 483 Nightmare (无标记BFS)
- dfs, bfs之邻接矩阵无向图
- 无向图的DFS和BFS算法实现
- 秒懂!何凯明的深度残差网络PPT是这样的|ICML2016 tutorial
- hadoop nfs网关
- 动态规划学习【一】
- linux下home目录迁移
- KMP
- 计蒜客 无脑博士 bfs
- matlab极限导数积分初步
- jvm内存调优及原理的学习笔记
- 好好学习数据结构
- git hook实现代码自动部署
- hadoop hive基本操作
- DHCP基础
- 三道算法题
- 原生JS经典射击游戏-小蜜蜂