计蒜客 无脑博士的试管们 【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 ...
随机推荐
- jQuery - ajaxUpLoad.js
ajaxFileUpload是一个异步上传文件的jQuery插件 语法:$.ajaxFileUpload([options]) options参数说明: 参数 作用 url 上传处理程序地址 file ...
- maven私服内容补充
1.添加阿里云中央仓库 注意Download Remote Indexes选项为True 1.登陆nexus私服(默认账号密码:admin/admin123) 2.点击右侧Repositories 3 ...
- XML解析技术简介——(一)
- ReLu、LeakyRelu、PReLu(转载)
转载链接:http://blog.csdn.net/cham_3/article/details/56049205
- 3种shell自动交互的方法【转】
一.背景 shell脚本在处理自动循环或大的任务方面可节省大量的时间,通过创建一个处理任务的命令清单,使用变量.条件.算术和循环等方法快速创建脚本以完成相应工作,这比在命令行下一个个敲入命令要省时省力 ...
- javascript 添加行,删除行,datepicker获取当前日期和上一个月日期并设置格式,笔记
$(function () { getdatepicker(); today(); getPreMonth(); getdatetimepicker(); }); function today(){ ...
- dubbo系列四、dubbo服务暴露过程源码解析
一.代码准备 1.示例代码 参考dubbo系列二.dubbo+zookeeper+dubboadmin分布式服务框架搭建(windows平台) 2.简单了解下spring自定义标签 https://w ...
- windows命令行中英文切换
Windows下cmd命令提示符窗口的语言设置(中英) 打开cmd命令提示窗口 输入 chcp 936 使用ping 命令 显示中文 2 同样 输入chcp 437 3 使用ping 命令
- spring上传文件
在使用spring上传文件的时候,使用的文件接收参数类型为 org.springframework.web.multipart.MultipartFile 如果该参数没有指定@RequestParam ...
- 易错之for循环
for i in range(3): print(i) print(i,"---") #Python的问题就在于,当循环结束以后,循环体中的临时变量i不会销毁,而是继续存在于执行环 ...