浙江大学ZOJ 1005题 解题报告

  • 第四篇解题报告,这道题十分十分十分的坑

  • 题目大意大概是说你有两个壶,分别告诉你壶的容量是多大,默认A壶要比B壶小然后给你一个目标值,你要用两个壶量出最终的目标值,你能够进行的操作一共有以下几种

  • fill A
    fill B
    empty A
    empty B
    pour A B
    pour B A
    success

  • fill A 把A装满
    fill B 把B装满
    empty A 清空A
    empty B 清空B
    pour A B 把A里面的水倒向B
    pour B A 把B里面的水倒向A
    success 成功

问通过上述几种操作(可重复)要如何让壶里面的水量出目标值

然后题目给了一组样例输入输出。

  • Sample Input

3 5 4
5 7 3

Sample Output

fill B
pour B A
empty A
pour B A
fill B
pour B A
success
fill A
pour A B
fill A
pour A B
empty B
pour A B
success

  • 然后就贼坑,一开始用搜索做,做了很多剪枝操作,就是得不出目标输出,后来仔细读了一下题,发现样例输出只是称出目标值的一种方案,也就是说你只要能成功的让壶里面的水正好等于目标值就OK的也就是说不用非得等于样例答案,然后嘞~就皆大欢喜。so短的代码就可以成功的得出答案。。。
    要是这样算的话其实算水题一道。
    上代码
#include<iostream>
using namespace std;
int main()
{
    int ha,hb,result;
    while(cin>>ha>>hb>>result)
    {   
        int water=0;
        while(water!=result)
        {
            water =water + ha;
            cout<<"fill A"<<endl<<"pour A B"<<endl;
            if(water>hb)
            {
                water = water-hb;
                cout<<"empty B"<<endl<<"pour A B"<<endl;
            }
        }
        cout<<"success"<<endl;
    }   
}

结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值