zoukankan      html  css  js  c++  java
  • Jugs【ZOJ 1005题】 两水壶灌水趣题

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1005

    题目刚开始引用了《虎胆龙威3》,看到电影的英文单词时,不觉虎躯一震,顿时来了兴趣,其实细数一下,虎胆龙威系列,本人觉得3是最不好看的一部,因为这部跨街区追逐战早前在另一部好莱坞电影里面看过,所谓先入为主,时间久远,也没再深入查询是A抄袭了B还是B抄袭了A,甚至我连B的电影名字都忘记了,毕竟没有大腕儿在里面,度娘也帮不上忙。

    当然,没看过电影并不影响做这道题,就像没看过《Monty Python》并不影响你成为python高手一样。

    两个容量分别为ca和cb的水壶,cb>=ca,无限量的水,要求用这两个水壶之间的互相灌水或清空或装满,使B水壶最终盛放的水容量为N。

    乍一看样例,吓到了,两个样例的倒水方向截然相反,我以为这就是一个突破口,于是各种演算,想找出倒水的方向原则,最后晕掉了,得到的都是自相矛盾的结果,无奈,我随便写了一个样例:5,18,2。然后就有一笔没一笔的在纸上划着:如果大灌小,可以得到13,8,3,16,11,6,1,14,9,4,17,12,7,2,15,10,5.竟然,发现所有的数据都可以由大灌小得到,我又重新做了样例2,success!

    所以,本题是个水题,最后得知是小学生趣味数学题一枚,只要一直按一个方向灌水,就可以得到要求的容量。

     1 #include <stdio.h>
     2 
     3 void operation(int ca, int canow, int cb, int cbnow, int n)//canow,cbnow分别代指A,B当前的水量
     4 {
     5     if(cbnow == n)
     6     {
     7         return;
     8     }
     9     else
    10     {
    11         if(cbnow > ca)//剩余水量比A总量还大
    12         {
    13             printf("pour B A\n");
    14             if(cbnow - (ca - canow) == n)//害怕判题系统会认为底下一个printf多余,所以就加上了这个if语句
    15             {
    16                 return;
    17             }
    18             printf("empty A\n");
    19             operation(ca, 0, cb, cbnow - (ca - canow), n);
    20         }
    21         else//剩余水量小于A总量,把它转移到A中保存
    22         {
    23             printf("pour B A\n");
    24             printf("fill B\n");
    25             operation(ca, cbnow, cb, cb, n);
    26         }
    27     }
    28 }
    29 
    30 int main()
    31 {
    32    int ca, cb, n;
    33    while(scanf("%d %d %d", &ca, &cb, &n) != EOF)
    34    {
    35     printf("fill B\n");
    36     operation(ca, 0, cb, cb, n);
    37     printf("success\n");
    38    }
    39    return 0;
    40 }
  • 相关阅读:
    《大道至简》读后感
    四大扩展欧几里得算法
    java8中使用函数式接口
    04_web基础(一)之tomcat介绍
    03_java基础(九)之综合练习与考核评估
    建站流程
    03_java基础(八)之static关键字与代码块
    (十)拒绝服务攻击工具包
    (九)拒绝服务攻击工具
    (八)拒绝服务–应用层DoS 攻击
  • 原文地址:https://www.cnblogs.com/Rafy/p/3002948.html
Copyright © 2011-2022 走看看