1.题目
给你六种面额 1、5、10、20、50、100 元的纸币,假设每种币值的数量都足够多,编写程序求组成N元(N为0~10000的非负整数)的不同组合的个数。
2.代码
import java.util.*;
public class Main{
public static void main(String args[]) {
Scanner scanner=new Scanner(System.in);
int[] money={1,5,10,20,50,100 };
while (scanner.hasNext()){
int n=scanner.nextInt();//拼凑面额
long[] dp=new long[n+1];//类型为int结果溢出,所以必须设置为long类型.
dp[0]=1;//dp[0]初始化为1,否则输出结果为0
for(int i=0;i<6;i++){
for(int j=1;j<=n;j++){
if(j>=money[i]){
dp[j]+=dp[j-money[i]];
}
}
}
System.out.println(dp[n]);
}
}
}
3.思想:dp
4.题目来源
美团17校招