• 390次
  • 9.48%
  • 1000ms
  • 65536K

无脑博士有三个容量分别是A,B,C升的试管,A,B,C分别是三个从1到20的整数,最初,A和B试管都是空的,而C试管是装满硫酸铜溶液的。有时,无脑博士把硫酸铜溶液从一个试管倒到另一个试管中,直到被灌试管装满或原试管空了。当然每一次灌注都是完全的。由于无脑博士天天这么折腾,早已熟练,溶液在倒的过程中不会有丢失。

写一个程序去帮助无脑博士找出当A是个是空的时候,C试管中硫酸铜溶液所剩量的所有可能性。

输入包括一行,为空格分隔开的三个数,分别为整数A,B和C。

输出包括一行,升序地列出当A试管是空的时候,C试管溶液所剩量的所有可能性。

样例1

输入:

2 5 10

输出:

5 6 7 8 9 10

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<queue>
#include<algorithm>using namespace std;int A, B, C;
bool vis[25][25][25];struct node{int a,b,c;
}pre,nxt;queue<node>Q;void solve(){pre.a = 0, pre.b = 0, pre.c = C;while( !Q.empty() ) Q.pop();Q.push( pre );vis[0][0][C] = true;while( !Q.empty() ){pre = Q.front(); Q.pop();int a = pre.a, b = pre.b, c = pre.c;if( a > 0 ){if( b < B ){nxt.a = a-min(a,(B-b)); nxt.b = b+min(a,(B-b)); nxt.c = c;  if( !vis[nxt.a][nxt.b][nxt.c] )Q.push( nxt ), vis[nxt.a][nxt.b][nxt.c] = true;}   if( c < C ){nxt.a = a-min(a,(C-c));nxt.b = b;nxt.c = c+min(a,(C-c));if( !vis[nxt.a][nxt.b][nxt.c] )Q.push( nxt ), vis[nxt.a][nxt.b][nxt.c] = true;}   }if( b > 0 ){if( a < A ){nxt.a = a+min(b,(A-a));nxt.b = b-min(b,(A-a));nxt.c = c;if( !vis[nxt.a][nxt.b][nxt.c] )Q.push( nxt ), vis[nxt.a][nxt.b][nxt.c] = true;}if( c < C ){nxt.a = a;nxt.b = b-min(b,(C-c));nxt.c = c+min(b,(C-c));if( !vis[nxt.a][nxt.b][nxt.c] )Q.push( nxt ), vis[nxt.a][nxt.b][nxt.c] = true;}}   if( c > 0 ){if( a < A ){nxt.a = a+min(c,(A-a)); nxt.b = b;nxt.c = c-min(c,(A-a));if( !vis[nxt.a][nxt.b][nxt.c] )Q.push( nxt ), vis[nxt.a][nxt.b][nxt.c] = true;}if( b < B ){nxt.a = a;nxt.b = b+min(c,(B-b));nxt.c = c-min(c,(B-b));if( !vis[nxt.a][nxt.b][nxt.c] )Q.push( nxt ), vis[nxt.a][nxt.b][nxt.c] = true;}}   }
}
int main(){while( scanf("%d%d%d",&A,&B,&C) != EOF){memset( vis, 0, sizeof(vis) );solve();bool tmp[25];memset(tmp,0,sizeof(tmp));for(int b = 0; b <= B; b++)for(int c = 0; c <= C; c++)tmp[c] |= vis[0][b][c];bool flag = false;  for(int i = 0; i <= C; i++)if( tmp[i] ){if( !flag ) printf("%d",i), flag =true;     else printf(" %d",i);}   puts("");}return 0;
}

计蒜客 难题题库 031 无脑博士的试管们相关推荐

  1. 计蒜客难题题库之一 泥塑课 python解答

    计蒜客挑战难题之一 泥塑课 python解答 题目: 小米是一个幼儿园老师,每学期的泥塑课上,她都会给每个学生发不超过250立方厘米的等量橡皮泥,教大家做泥塑.在上课过程中,她发现每个班都恰好有一个小 ...

  2. 计蒜客难题题库之二 奇怪的国家 python解答

    计蒜客挑战难题之二 奇怪的国家 python解答 题目: 有一个奇怪的国家,里面的国民对于事情的态度永远只有两面.当两个人遇到一起讨论一个事情的时候--两个持赞同观点的人遇到一起后会对这个事情都继续赞 ...

  3. 计蒜客 难题题库 204 草药的价值

    17次 11.7% 1000ms 65536K 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到 ...

  4. 计蒜客 难题题库 223 字母排序

    49次 14.2% 1000ms 65536K XXXX年突然有外星人造访,但大家语言不通,不过科学家们经过研究发现外星人用26个英文字母组成的单词中最长不降子序列的长度来表述数字,且英文字母的排列顺 ...

  5. 计蒜客 难题题库 205 图书ISBN号码

    102次 13.7% 1000ms 65536K 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符,其规定格式如"x-xxx-xxxxx-x& ...

  6. 计蒜客 难题题库 201 奖学金的分配

    46次 30.4% 1000ms 65536K 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 1)  院士奖学金,每人8000元,期末平均成绩高于80分(& ...

  7. 5.计蒜客ACM题库.A2234 结果填空:青蛙爬井

    计蒜客ACM题库.A2234 结果填空:青蛙爬井 有一口深度为 high 米的水井,井底有一只青蛙,它每天白天能够沿井壁向上爬 up 米,夜里则顺井壁向下滑 down 米. 若青蛙从某个早晨开始向外爬 ...

  8. 12.计蒜客信息学题库:T1702 魔法宝石

    12.计蒜客信息学题库:T1702 魔法宝石 Bessie 去珠宝商店想要买一些魔法宝石.商店里有 n 个宝石,每个宝石的重量为 wi,幸运值为 vi .Bessie 的购物车只能装重量之和不超过 m ...

  9. 1.计蒜客ACM题库.A1001 整除问题

    计蒜客ACM题库.A1001 整除问题 判断一个数是否能被另一个整数整除是一个挺简单的问题,一般一个模运算就可以搞定了,懒惰的晓萌还是不想自己做,于是找到你帮他写代码,你就帮帮他吧. 输入格式 输入包 ...

最新文章

  1. Cell:损伤和微生物模式的共同作用控制着根部的局部免疫反应
  2. ALFNet行人检测
  3. 微信小程序 PDF下载打印
  4. 网络流-Dinic求最大流(仅做自己复习,写的很不清楚)
  5. 一文搞定 Spring Data Redis 详解及实战
  6. python打印多个变量_在Python中打印多个变量
  7. Java虚拟机栈详解
  8. [SDOI2006]保安站岗 树dp
  9. OpenShift 4 - DevSecOps (3) - 用 RHACS 精细化管理云原生应用安全
  10. 人工神经网络----Hebbian学习规则
  11. SQL使用LIKE匹配
  12. U-boot移植方法
  13. echarts中国以及各省市地图数据
  14. 答复: 关于用异常控制程序流程的看法
  15. win10注册表开机自启
  16. min_max算法和alpha-beta剪枝 python实现
  17. 给计算机写程序的第一人竟是一位女子
  18. 单词1(-cess -ceed -cede -gress -gred -grad)=to go、go
  19. 老农的计算机学习笔记(一)计算机的诞生及其基础
  20. [云原生专题-16]:容器 - 在Windows主机上搭建Docker环境

热门文章

  1. 如何申请专利及流程是怎样的
  2. java动态打包_java 调用动态库打包sdk
  3. 基于PP-OCRv3的电表检测识别
  4. 池州学院期末计算机考试题,池州学院数据库期末模拟试卷1..doc
  5. 微信硬件蓝牙教程全集
  6. 宁波到佛山海运路线周期
  7. 【中级计量经济学】Lecture 10 内生性和工具变量法
  8. W11的右键如何改成和W10一样?(一行命令即可解决!)
  9. ps2019最新版-安装地址
  10. Java线程通信的几种方式