SDUT 3145 Integer division 1

来源:互联网 发布:mac放电影有杂音 编辑:程序博客网 时间:2024/05/21 15:13

Integer division 1

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

整数划分是一个非常经典的数学问题。
所谓整数划分,是指把一个正整数n写成为n=m1+m2+...+mi的形式,其中mi为正整数,并且1<=mi<=n,此时,{m1, m2, ..., mi}为n的一个划分。如果{m1, m2, ..., mi}中的最大值不超过m,即max{m1, m2, ..., mi}<=m,那么我们称之为整数n的一个m划分。
现在给出你正整数n和m,请你输出n的m划分的数量。
例如,当n=4时,有5个划分,即{4}, {3,1}, {2,2}, {2,1,1}, {1,1,1,1}。
注意,4=1+3和4=3+1被认为是同一个划分。

输入

 输入文件以EOF结束。
每组数据占一行,有两个正整数n和m。(n,m<=50)

输出

 输出n的m划分的数量。

示例输入

4 4

示例输出

5


这是完全背包题

#include <stdio.h>#include <string.h>int main(){    int i,j,n,m,dp[100];    while(scanf("%d %d",&n,&m)!=EOF)    {        memset(dp,0,sizeof(dp));        dp[0]=1;//边界都初始化为1,具体为啥 就相当于为什么0!=1;       for(i=1;i<=m;i++)//枚举        for(j=0;j<=n;j++)//相当于容量       {           if(j>=i)            dp[j]=dp[j-i]+dp[j];       }       printf("%d\n",dp[n]);    }    return 0;}






0 0
原创粉丝点击