c4951491235 2018-03-17 15:04 采纳率: 100%
浏览 1299
已采纳

一个算法试题,组合 (计数问题)方面

/*
X星球要派出一个5人组成的观察团前往W星。
其中:
A国最多可以派出4人。
B国最多可以派出2人。
C国最多可以派出2人。
D国最多可以派出1人。
E国最多可以派出1人。
F国最多可以派出3人。
那么最终派往W星的观察团会有多少种国别的不同组合呢?

组合问题 (计数问题)
*/
public class Main3 {

//a各个国家能派出的最大人数
//x派出方案的组合
//k选择在哪个国家派出
//goal 目标派出人数

static int sum = 0;
public static void main(String[] args) {
    int[] a = {4,2,2,1,1,3};//a-f国家有几名代表
    int[] x = new int[a.length];        
    f(a,x,0,5);
    System.out.println(sum);        
}

public static void f(int[] a,int[] x,int k,int goal) {
    if(k==x.length ) {
        if(goal == 0) {
            sum += 1;
            //return;
        }
        //return;
    }

    for(int i = 0;i <= Math.min(a[k],goal);i++ ) {
        x[k] = i;
        f(a,x,k+1,goal-i);      
    }
    x[k] = 0;

}

}

先上代码
下面是问题
在f方法中注释掉的两处的return
为什么当return在外面括号时 ,不会报错。。。
而在里面的括号时,会出现超出栈异常。。。。

他们不都是加一然后返回吗。。。

  • 写回答

2条回答 默认 最新

  • threenewbee 2018-03-17 15:34
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 preLaunchTask"C/C++: aarch64- apple-darwin22-g++-14 生成活动 文件”已终止,退出代码为-1。
  • ¥18 关于#贝叶斯概率#的问题:这篇文章中利用em算法求出了对数似然值作为概率表参数,然后进行概率表计算,这个概率表是怎样计算的呀
  • ¥20 C#上传XML格式数据
  • ¥15 elementui上传结合oss接口断点续传,现在只差停止上传和继续上传,各大精英看下
  • ¥100 单片机hardfaulr
  • ¥20 手机截图相片分辨率降低一半
  • ¥50 求一段sql语句,遇到小难题了,可以50米解决
  • ¥15 速求,对多种商品的购买力优化问题(用遗传算法、枚举法、粒子群算法、模拟退火算法等方法求解)
  • ¥100 速求!商品购买力最优化问题(用遗传算法求解,给出python代码)
  • ¥15 虚拟机检测,可以是封装好的DLL,可付费