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

从1-n个数取若干个数,使和为m,问多少种情况

时间:2019-12-03 01:24:20      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:oid   个数   根据   ==   ret   stat   ring   思想   运用   

其实运用了背包问题的思想,假设对这个问题建立了函数:f(m,n)

 从n个数中取:有两种情况

               n不在这若干个数中,f(m,n-1)

              n在这若干个数中,f(m-n,n-1)

所以 f(m,n)=f(m,n-1)+f(m-n,n-1)

根据上式,应用递归的思想,编程如下:

public class Test1 {
public static void main(String[] args) throws Exception {
    Test1 test=new Test1();
   System.out.println(test.fun(6,5));            
 
}
public int fun(int m,int n){
     if(n<1||m<1) {
        
      return  0;
        
     } if(m<n) {//如果最大值为m
         n=m;
         return fun(m,m-1)+1;
        
     }if(m==n|m==1) {
         return 1;
     }
    return fun(m,n-1)+fun(m-n,n-1);
}
}

从1-n个数取若干个数,使和为m,问多少种情况

标签:oid   个数   根据   ==   ret   stat   ring   思想   运用   

原文地址:https://www.cnblogs.com/yxj808/p/11974206.html

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