本文共 884 字,大约阅读时间需要 2 分钟。
题目详述:
递归:
①物品n个,物品体积逐一放入a[100]中
②递归函数count(i,sum)=count(i+1,sum-a[i])+count(i+1,sum);
count(i+1,sum-a[i])
代表从第i+1个物品开始,剩余体积数为sum-a[i]的方案数 (隐含意思:已经将a[i]的体积计算进去,即包含a[i]的体积)count(i+1,sum)
代表从第i+1个物品开始,剩余体积数为sum的方案数 (隐含意思:不将a[i]的体积计算进去,即不包含a[i]的体积)import java.util.Scanner;public class Main { private static int[] array= new int[20]; // 题目上已说明(1 <= n <= 20) private static int n; private static int count(int i,int sum) { if(sum==0){ return 1; //找到一组和为sum的组合数; } if(i==n||sum<0) { return 0;//i==n说明没有其他的数来组合,sum<0说明组合不出; } return count(i+1,sum-array[i])+count(i+1,sum); //从数组的第i为开始,包含a[i] 和 不包含a[i]; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); len = sc.nextInt(); for(int i = 0; i
转载地址:http://sejwi.baihongyu.com/