计蒜客 无脑博士的试管们 【dfs】
题目链接:https://nanti.jisuanke.com/t/31
题目大意:
无脑博士有三个容量分别是A,B,C 升的试管,A,B,C 分别是三个从 1 到20 的整数,最初,A 和 B 试管都是空的,而 C 试管是装满硫酸铜溶液的。有时,无脑博士把硫酸铜溶液从一个试管倒到另一个试管中,直到被灌试管装满或原试管空了。当然每一次灌注都是完全的。由于无脑博士天天这么折腾,早已熟练,溶液在倒的过程中不会有丢失。
写一个程序去帮助无脑博士找出当 A 试管是空的时候,C 试管中硫酸铜溶液所剩量的所有可能性。
输入格式
输入包括一行,为空格分隔开的三个数,分别为整数 A,B,C。
输出格式
输出包括一行,升序地列出当 A 试管是空的时候,C 试管溶液所剩量的所有可能性。
样例输入
2 5 10
样例输出
5 6 7 8 9 10
#include <iostream>
using namespace std; int f[][][];
int A, B, C; void dfs(int x, int y, int z)
{
if (x + z > A) //C向A倒
{
if (f[A][y][x + z - A] == )
{
f[A][y][x + z - A] = ;
dfs(A, y, x + z - A);
}
}
else
{
if (f[x + z][y][] == )
{
f[x + z][y][] = ;
dfs(x + z, y, );
}
}
if (y + z>B) //C向B倒
{
if (f[x][B][y + z - B] == )
{
f[x][B][y + z - B] = ;
dfs(x, B, y + z - B);
}
}
else
{
if (f[x][y + z][] == )
{
f[x][y + z][] = ;
dfs(x, y + z, );
}
}
if (x + y >B) //A向B倒
{
if (f[x + y - B][B][z] == )
{
f[x + y - B][B][z] = ;
dfs(x + y - B, B, z);
}
}
else
{
if (f[][x + y][z] == )
{
f[][x + y][z] = ;
dfs(, x + y, z);
}
}
if (x + z > C) //A向C倒
{
if (f[x + z - C][y][C] == )
{
f[x + z - C][y][C] = ;
dfs(x + z - C, y, C);
}
}
else
{
if (f[][y][x + z] == )
{
f[][y][x + z] = ;
dfs(, y, x + z);
}
}
if (x + y > A) //B向A倒
{
if (f[A][x + y - A][z] == )
{
f[A][x + y - A][z] = ;
dfs(A, x + y - A, z);
}
}
else
{
if (f[x + y][][z] == )
{
f[x + y][][z] = ;
dfs(x + y, , z);
}
}
if (y + z > C) //B向C倒
{
if (f[x][y + z - C][C] == )
{
f[x][y + z - C][C] = ;
dfs(x, y + z - C, C);
}
}
else
{
if (f[x][][y + z] == )
{
f[x][][y + z] = ;
dfs(x, , y + z);
}
} } int main()
{
int i, j, k;
void dfs(int x, int y, int z);
cin >> A >> B >> C;
for (i = ; i < A + ; i++)
for (j = ; j < B + ; j++)
for (k = ; k < C + ; k++)
f[i][j][k] = ;
f[][][C] = ;
dfs(, , C);
for (k = ; k < C + ; k++)
for (j = ; j < B + ; j++)
if (f[][j][k] > )
{
cout << k;
if (k != C) cout << ' ';
}
return ;
}
2018-05-14
计蒜客 无脑博士的试管们 【dfs】的更多相关文章
- 计蒜客 无脑博士 bfs
题目链接无脑博士的试管们 思路:直接模拟倒水过程即可,但是需要记忆判断当前的情况是否已经处理过.dfs和bfs都ok AC代码 #include <cstdio> #include < ...
- 无脑博士的试管们--dfs搜素
无脑博士有三个容量分别是A,B,C升的试管,A,B,C分别是三个从1到20的整数,最初,A和B试管都是空的,而C试管是装满硫酸铜溶液的.有时,无脑博士把硫酸铜溶液从一个试管倒到另一个试管中,直到被灌试 ...
- 计蒜客 作弊揭发者(string的应用)
鉴于我市拥堵的交通状况,市政交管部门经过听证决定在道路两侧安置自动停车收费系统.当车辆驶入车位,系统会通过配有的摄像头拍摄车辆画面,通过识别车牌上的数字.字母序列识别车牌,通过连接车管所车辆信息数据库 ...
- 计蒜客的一道题dfs
这是我无聊时在计蒜客发现的一道题. 题意: 蒜头君有一天闲来无事和小萌一起玩游戏,游戏的内容是这样的:他们不知道从哪里找到了N根不同长度的木棍, 看谁能猜出这些木棍一共能拼出多少个不同的不等边三角形. ...
- 计蒜客模拟赛5 D2T1 成绩统计
又到了一年一度的新生入学季了,清华和北大的计算机系同学都参加了同一场开学考试(因为两校兄弟情谊深厚嘛,来一场联考还是很正常的). 不幸的是,正当老师要统计大家的成绩时,世界上的所有计算机全部瘫痪了. ...
- 计蒜客 等边三角形 dfs
题目: https://www.jisuanke.com/course/2291/182238 思路: 1.dfs(int a,int b,int c,int index)//a,b,c三条边的边长, ...
- 计蒜客 方程的解数 dfs
题目: https://www.jisuanke.com/course/2291/182237 思路: 来自:https://blog.csdn.net/qq_29980371/article/det ...
- 计蒜客 买书 dfs
题目: https://www.jisuanke.com/course/2291/182236 思路: 递归解决,从第一本书开始,每本书都有两种选择: //index是book里面每本书价格的下标, ...
- 计蒜客:Entertainment Box
Ada, Bertrand and Charles often argue over which TV shows to watch, and to avoid some of their fight ...
随机推荐
- Django搭建简易博客教程(四)-Models
原文链接: http://www.jianshu.com/p/dbc4193b4f95 Django Model 每一个Django Model都继承自django.db.models.Model 在 ...
- Activity Window View WindowManager关系&Touch事件分发机制
http://www.cnblogs.com/linjzong/p/4191891.html https://www.cnblogs.com/kest/p/5141817.html https://b ...
- 不修改加密文件名的勒索软件TeslaCrypt 4.0
不修改加密文件名的勒索软件TeslaCrypt 4.0 安天安全研究与应急处理中心(Antiy CERT)近期发现勒索软件TeslaCrypt的最新变种TeslaCrypt 4.0,它具有多种特性,例 ...
- Freemarker list 的简单使用
freemarker list (长度,遍历,下标,嵌套,排序) 1. freemarker获取list的size : Java ArrayList<String> list = new ...
- 函数前加static与不加static的区别
1:加了static后表示该函数失去了全局可见性,只在该函数所在的文件作用域内可见 2:当函数声明为static以后,编译器在该目标编译单元内只含有该函数的入口地址,没有函数名,其它编译单元便不能通过 ...
- C语言函数调用栈(一)
程序的执行过程可看作连续的函数调用.当一个函数执行完毕时,程序要回到调用指令的下一条指令(紧接call指令)处继续执行.函数调用过程通常使用堆栈实现,每个用户态进程对应一个调用栈结构(call sta ...
- 重装系统,出现:Units specified don't exist SHSUCDX can't install
重装系统,出现:Units specified don't exist SHSUCDX can't install 解决方案1: 首先是你的硬盘分区不对吧 先用PQ格成ntfs或far32 进PE把C ...
- 005_nginx414_nginx 414 Request-URI Too Large
一.开发请求一个非常长的请求参数 https://jiaju.jyall.me/backend/dish/getSales/?dishId=167271&dishId=166975&d ...
- 利用navcat为mysql数据库单独的表赋权限及表结构同步
为mysql数据库单独的表赋权限 场景:考勤系统需要拿OA数据库td_oa中的flow_run和flow_run_data表中的数据做考勤计算 考勤系统只需要读取这两张表的数据,所以只需要开通一个单独 ...
- java多线程快速入门(三)
通过实现Runnable接口实现多线程 package com.cppdy; //通过实现Runnable接口实现多线程 class MyThread1 implements Runnable{ @O ...