• Mother's Milk


    描述

     Farmer John has three milking buckets of capacity A, B, and C liters. Each of the numbers A, B, and C is an integer from 1 through 20, inclusive. Initially, buckets A and B are empty while bucket C is full of milk. Sometimes, FJ pours milk from one bucket to another until the second bucket is filled or the first bucket is empty. Once begun, a pour must be completed, of course. Being thrifty, no milk may be tossed out.

    Write a program to help FJ determine what amounts of milk he can leave in bucket C when he begins with three buckets as above, pours milk among the buckets for a while, and then notes that bucket A is empty.

    输入

    A single line with the three integers A, B, and C.

    输出

    A single line with a sorted list of all the possible amounts of milk that can be in bucket C when bucket A is empty.

    样例输入

    8 9 10

    2 5 10

    样例输出

    1 2 8 9 10
    5 6 7 8 9 10

    题目大意:有A,B,C三个杯子,A,B为空杯子,C杯子开始装满了牛奶。   一个杯子里的牛奶可以往另外两个杯子里到(直到杯内牛奶倒完或者另一个杯子牛奶装满)

    求A杯子空的时候C杯子牛奶可能的情况。  解题思路:深搜

    #include <bits/stdc++.h>
    using namespace std;
    int a[65][65][65],b[65];
    int n,m,k;
    void dfs(int A,int B,int C)
    {
        if(a[A][B][C]) return;
        a[A][B][C]=1;
        if(A==0) b[C]=1;
        if(A>0)
        {
            int mm=min(m-B,A);
            dfs(A-mm,B+mm,C);
            mm=min(k-C,A);
            dfs(A-mm,B,C+mm);
        }
        if(B>0)
        {
            int mm=min(B,n-A);
            dfs(A+mm,B-mm,C);
            mm=min(B,k-C);
            dfs(A,B-mm,C+mm);
        }
        if(C>0)
        {
            int mm=min(C,n-A);
            dfs(A+mm,B,C-mm);
            mm=min(C,m-B);
            dfs(A,B+mm,C-mm);
        }
    }
    int main()
    {
        while(cin>>n>>m>>k)
        {
            memset(a,0,sizeof(a));
            memset(b,0,sizeof(b));
            dfs(0,0,k);
            int f=1;
            for(int i=0;i<=60;i++)
            {
                if(b[i]&&f)
                {
                    cout<<i;
                    f=0;
                }
                else if(b[i]) cout<<" "<<i;
            }
            cout<<"
    ";
        }
    }
  • 相关阅读:
    Flask框架学习教程 汇总篇
    git版本管理工具
    Django-rest framework框架 汇总篇
    数据库学习之路 汇总篇
    Web后端开发学习教程 汇总篇
    Django框架学习教程 汇总篇
    Web前端开发学习教程 汇总篇
    Python开发之爬虫 汇总篇
    Python从入门到放弃 汇总篇
    flask之SQLAlchemy
  • 原文地址:https://www.cnblogs.com/ww123/p/10386232.html
Copyright © 2020-2023  润新知