题目链接: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】的更多相关文章

  1. 计蒜客 无脑博士 bfs

    题目链接无脑博士的试管们 思路:直接模拟倒水过程即可,但是需要记忆判断当前的情况是否已经处理过.dfs和bfs都ok AC代码 #include <cstdio> #include < ...

  2. 无脑博士的试管们--dfs搜素

    无脑博士有三个容量分别是A,B,C升的试管,A,B,C分别是三个从1到20的整数,最初,A和B试管都是空的,而C试管是装满硫酸铜溶液的.有时,无脑博士把硫酸铜溶液从一个试管倒到另一个试管中,直到被灌试 ...

  3. 计蒜客 作弊揭发者(string的应用)

    鉴于我市拥堵的交通状况,市政交管部门经过听证决定在道路两侧安置自动停车收费系统.当车辆驶入车位,系统会通过配有的摄像头拍摄车辆画面,通过识别车牌上的数字.字母序列识别车牌,通过连接车管所车辆信息数据库 ...

  4. 计蒜客的一道题dfs

    这是我无聊时在计蒜客发现的一道题. 题意: 蒜头君有一天闲来无事和小萌一起玩游戏,游戏的内容是这样的:他们不知道从哪里找到了N根不同长度的木棍, 看谁能猜出这些木棍一共能拼出多少个不同的不等边三角形. ...

  5. 计蒜客模拟赛5 D2T1 成绩统计

    又到了一年一度的新生入学季了,清华和北大的计算机系同学都参加了同一场开学考试(因为两校兄弟情谊深厚嘛,来一场联考还是很正常的). 不幸的是,正当老师要统计大家的成绩时,世界上的所有计算机全部瘫痪了. ...

  6. 计蒜客 等边三角形 dfs

    题目: https://www.jisuanke.com/course/2291/182238 思路: 1.dfs(int a,int b,int c,int index)//a,b,c三条边的边长, ...

  7. 计蒜客 方程的解数 dfs

    题目: https://www.jisuanke.com/course/2291/182237 思路: 来自:https://blog.csdn.net/qq_29980371/article/det ...

  8. 计蒜客 买书 dfs

    题目: https://www.jisuanke.com/course/2291/182236 思路: 递归解决,从第一本书开始,每本书都有两种选择: //index是book里面每本书价格的下标, ...

  9. 计蒜客:Entertainment Box

    Ada, Bertrand and Charles often argue over which TV shows to watch, and to avoid some of their fight ...

随机推荐

  1. ubuntu 14.04 安装 OpenCV -2.4.13

    1. 安装 (1) 更新软件源 sudo apt-get update sudo apt-get upgrade (2)删除以前安装的 FFMPEG 和 x264 库: sudo apt-get re ...

  2. Spring-boot:快速搭建微框架服务

    前言: Spring Boot是为了简化Spring应用的创建.运行.调试.部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置. 简单来说,它提供了一堆依赖打包,并 ...

  3. 【Python】JBOSS-JMX-EJB-InvokerServlet批量检测工具

    一.说明 在JBoss服务器上部署web应用程序,有很多不同的方式,诸如:JMX Console.Remote Method Invocation(RMI).JMXInvokerServlet.Htt ...

  4. 【C++】结构体、联合体大小计算

    struct结构体大小计算 struct A { char a; int b; char c; } 这个结构体中,char占据1字节,int占据4字节,char占据1字节,而这组数据结构的大小是12字 ...

  5. WGAN源码解读

    WassersteinGAN源码 作者的代码包括两部分:models包下包含dcgan.py和mlp.py, 这两个py文件是两种不同的网络结构,在dcgan.py中判别器和生成器都含有卷积网络,而m ...

  6. activit流程引擎启动流程报错

    代码如下: 目录结构 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); @Test public void ...

  7. java中一个Map要找到值Value最小的那个元素的方法

    import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.Map ...

  8. keras + tensorflow安装

    先安装anaconda 一条指令:conda install keras 就可以把keras,tensorflow装好.

  9. python 全栈开发,Day89(sorted面试题,Pycharm配置支持vue语法,Vue基础语法,小清单练习)

    一.sorted面试题 面试题: [11, 33, 4, 2, 11, 4, 9, 2] 去重并保持原来的顺序 答案1: list1 = [11, 33, 4, 2, 11, 4, 9, 2] ret ...

  10. 步步为营-33-Md5(32)加密与Base64加密

    说明: 1:直接贴码 using System; using System.Collections.Generic; using System.ComponentModel; using System ...