把m升水倒入n个桶中,可以有桶为空,问有多少种倒法

来源:互联网 发布:淘宝钻石展位图片 编辑:程序博客网 时间:2024/04/27 17:16


#include <iostream>using namespace std;int count;void DPS2(int x1,int x2,int x3,int x4,int x5){    if(x3>x4) return;    for(int i=x5;i>=0;i--)    {        if(x1==x2&&x3+i==x4)            count ++;        else if(x1<x2)            DPS2(x1+1,x2,x3+i,x4,i);    }}void DPS(int x,int y){    DPS2(0,y-1,0,x,x);}int main(){    count = 0;    int m,n;    cin >> m >> n;    DPS(m,n);    cout << count;}
x1,x2,x3,x4,x5 分别表示当前算第x1个桶,共x2+1个桶,当前已经装了x3升水,共需要装x4升水,它前面的一个桶装了x5升水。


好复杂的样子,,只是因为  7,3   的时候,方案有

7,0,0

6,1,0

5,2,0,

5,1,1,

4,3,0

4,2,1

3,3,1

3,2,2

共7种方法,,5,1,1, 和1,1,5 算同一个。。所以  三个数间有大小排列的关系就可以排除那个情况了

所以设置了x5 表示左边那个桶装了多少升水,当前桶不能装超过x5升的水




0 0
原创粉丝点击