StringBuffer类型的赋值是不会改变原来的值得。
在Java中,默认在使用一个变量的时候必须赋予它初值
通俗的讲,就是基本数据类型和包装类之间的转换。如: int 类型和 Integer 类的转换
基本数据类型转化成包装类是装箱 (如: int --> Integer)。
包装类转化成基本数据类型就是拆箱 (如:Integer --> int)。
包装类就是引用类型,基本数据类型就是值类型。所以选C
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int kinds = in.nextInt();
int[] arr = new int[kinds];
for (int i = 0; i < kinds; i++) {
arr[i] = in.nextInt();
}
System.out.println(differentkinds(arr, kinds, 40,0));
}
}
static int differentkinds(int[] arr, int n, int v,int index) {
if (v == 0) {
return 1;
}
if (n == 0) {
return 0;
}else {
//从后往前装,最后一个开始,装上n个后,体积减少,继续往前
//装上n个后,如果无解。删除该包。然后从n-1开始继续往前装
return differentkinds(arr,n-1,v-arr[index],index+1)
+differentkinds(arr,n-1,v,index+1);
}
}
}
将输入的值都存放在数组里,创建一个方法去用递归来计算有几种选择方式,当体积刚好用完说明找到一种方法返回1,如果一直到n为0,说明没找到,重新开始找。