zoukankan      html  css  js  c++  java
  • USACOMother's Milk

    http://ace.delos.com/usacoprob2?a=SZbyXoKqpyP&S=milk3

    一题比较简单的搜索题。nocow上列出3种解法:http://www.nocow.cn/index.php/USACO/milk3

    就我的感觉吧,方法一最简单而且最靠谱,而我的程序长得好像和方法一最像了= =

    因为倒法只有6种(a倒b,a倒c,b倒a,b倒c,c倒a,c倒b),而且当且仅当倒出桶有牛奶才可以倒出。而倒出多少牛奶适合呢?这就关系到倒出桶的牛奶总量和倒入桶可承受的牛奶量了。具体的看程序。

    #include <iostream>
    #include <string.h>
    #include <cstdio>
    using namespace std;
    
    bool f[100]={false};
    bool ff[22][22][22]={false};
    int aa,bb,cc;
    
    void work(int a,int b,int c)
    {
        if (ff[a][b][c]) return;         //三维数组判重,不过听说二维也可以
        ff[a][b][c]=true;
        if (a==0) f[c]=true;
        if (a!=0)
        {
            work(a-min(bb-b,a),b+min(bb-b,a),c);   //a->b
            work(a-min(cc-c,a),b,c+min(cc-c,a));   //a->c
        }
        if (b!=0)
        {
            work(a+min(aa-a,b),b-min(aa-a,b),c);   //b->a
            work(a,b-min(cc-c,b),c+min(cc-c,b));    //b->c
        }
        if (c!=0)
        {
            work(a+min(aa-a,c),b,c-min(aa-a,c));   //c->a
            work(a,b+min(bb-b,c),c-min(bb-b,c));   //c->b
        }
    }
    
    int main()
    {
        freopen("milk3.in","r",stdin);
        freopen("milk3.out","w",stdout);
        cin>>aa>>bb>>cc;
        work(0,0,cc);
        for (int i=0;i<cc;i++)
        if (f[i]) cout<<i<<" ";
        cout<<cc<<endl;
        return 0;
    }

    diyi

    第一次拿到first time!值得庆祝!

  • 相关阅读:
    散列
    AVL树的单旋与双旋
    Ubuntu系统目录
    os x文件系统结构简介
    c语言静态局部变量
    创建J2EE 5.0工程后,JSTL不能使用解决方法
    mysql
    指针
    servlet 访问项目
    c数组
  • 原文地址:https://www.cnblogs.com/ay27/p/2719923.html
Copyright © 2011-2022 走看看