码迷,mamicode.com
首页 > 其他好文 > 详细

poj 1664 整数划分

时间:2018-02-26 23:29:51      阅读:321      评论:0      收藏:0      [点我收藏+]

标签:.com   post   ace   ret   问题   技术   span   图片   整数   

技术分享图片

 

根据题意,将n个苹果放入m个盘子中,盘子样式相同,求所有方法。

这是一个典型的整数划分问题

1.n == 1  只有一个苹果,由于盘子样式相同,那么放在哪个盘子中都是一种放法,fun(n,m) = 1

2.m == 1  只有一个盘子,将所有苹果放到那个盘子中  fun(n,m) = 1

3.n < m    盘子数比苹果数多,最多把n个苹果放到n个盘子中  fun(n,m) = fun(n,n)

4.n == m   盘子数等于苹果数,第一种情况每个盘子放一个苹果,第二种情况在至少一个盘子不放苹果的情况下,fun(n,m) = fun(n,m-1)  所以fun(n,m) = 1 + fun(n,m-1)

5.n <= m   第一种情况至少一个盘子不放苹果,fun(n,m) = fun(n,m-1)    第二种情况所有盘子都有苹果,将每个盘子苹果拿出一个,再将n-m个苹果放到m个盘子中 fun(n,m) = fun(n-m,m)  所以fun(n,m) = fun(n-m,m) + fun(n,m-1)

 

#include<iostream>
using namespace std;

int fun(int a,int b)
{
    if(a==1||b==1)
        return 1;
    if(a < b)
        return fun(a,a);
    if(a == b)
        return 1 + fun(a,b-1);
    return fun(a,b-1) + fun(a-b,b);
}

int main()
{
    int count,a,b;
    cin >> count;
    while(count--)
    {
        cin>>a>>b;
        cout<<fun(a,b)<<endl;
    }
    return 0;
}

 

poj 1664 整数划分

标签:.com   post   ace   ret   问题   技术   span   图片   整数   

原文地址:https://www.cnblogs.com/ZZUGPY/p/8476019.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!