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

原创 2016年06月05日 20:26:23


#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升的水




OpenSource的末日?

OpenSource的末日? 蓝森林 http://www.lslnet.com 2000年3月30日 09:18   Olaf Beckman在Linux.com写了一篇文章,阐述为什么他认为 OP...
  • Virtual
  • Virtual
  • 2001-01-12 11:57:00
  • 828

第七届蓝桥杯第9题:交换瓶子

交换瓶子 有N个瓶子,编号 1 ~ N,放在架子上。 比如有5个瓶子: 2 1 3 5 4 要求每次拿起2个瓶子,交换它们的位置。 经过若干次后,使得瓶子的序号为: ...
  • luoluozlb
  • luoluozlb
  • 2016-05-07 18:21:51
  • 2143

宜信笔试题 把m升水倒入n个杯子

把m升水倒入n个杯子,如7升水倒入3个杯子,511,421,331分配都可以。但是421和214,151和511之类的视为同一种分配方法。杯子可以放空,如700也算一种方法#include//把m升水...
  • yaoxingshuai
  • yaoxingshuai
  • 2016-03-29 20:10:04
  • 2837

m 升的水倒入 n 个相同的容器(容器无限大)

问题描述要把 m 升的水倒入 n 个相同的容器中(假设容器足够大),允许有的容器是空的,问共有多少种不同的倒法?(用k表示)5,1,1和1,5,1和 1,1,5 是同一种倒法。 Input: 第一行是...
  • coder_ken
  • coder_ken
  • 2016-03-31 11:19:28
  • 1748

倒水问题(算法挑战)

我想我们都做过这么一道题: 有两个容器,容积分别为A升和B升,有无限多的水,现在需要C升水。 我们还有一个足够大的水缸,足够容纳C升水。起初它是空的,我们只能往水缸里倒入水,而不能倒出。 可以进...
  • findsafety
  • findsafety
  • 2013-09-11 14:18:14
  • 4772

交换瓶子(蓝桥杯入门)

交换瓶子有N个瓶子,编号 1 ~ N,放在架子上。比如有5个瓶子: 2 1 3 5 4要求每次拿起2个瓶子,交换它们的位置。 经过若干次后,使得瓶子的序号为: 1 2 3 4 5对于这么简单的情...
  • sunlanchang
  • sunlanchang
  • 2017-03-18 15:32:43
  • 1016

交换瓶子

有N个瓶子,编号 1 ~ N,放在架子上。 比如有5个瓶子: 2 1 3 5 4 要求每次拿起2个瓶子,交换它们的位置。 经过若干次后,使得瓶子的序号为: 1 2 3 4 5 对于这么简单的情况,显然...
  • Someone16111
  • Someone16111
  • 2018-03-19 19:11:36
  • 27

交换瓶子 - 2016年第七届蓝桥杯

交换瓶子有N个瓶子,编号 1 ~ N,放在架子上。比如有5个瓶子:2 1 3 5 4要求每次拿起2个瓶子,交换它们的位置。经过若干次后,使得瓶子的序号为:1 2 3 4 5对于这么简单的情况,显然,至...
  • xindada559
  • xindada559
  • 2018-03-31 19:12:47
  • 7

蓝桥杯 交换瓶子

有N个瓶子,编号 1 ~ N,放在架子上。 比如有5个瓶子: 2 1 3 5 4 要求每次拿起2个瓶子,交换它们的位置。 经过若干次后,使得瓶子的序号为: 1 2 3 4 5 对于这么...
  • qq_36238595
  • qq_36238595
  • 2017-03-29 18:37:53
  • 439

2016第七届蓝桥杯 C/C++省赛第9题 交换瓶子

交换瓶子 有N个瓶子,编号 1 ~ N,放在架子上。 比如有5个瓶子: 2 1 3 5 4 要求每次拿起2个瓶子,交换它们的位置。 经过若干次后,使得瓶子的序号为: 1 2 3 4 5 对于这...
  • mc1478
  • mc1478
  • 2016-03-21 10:53:14
  • 2380
收藏助手
不良信息举报
您举报文章:把m升水倒入n个桶中,可以有桶为空,问有多少种倒法
举报原因:
原因补充:

(最多只允许输入30个字)