不同组合方式有四种纸币java_拼凑钱币丶Java教程网-IT开发者们的技术天堂
【問題】給你六種面額 1、5、10、20、50、100 元的紙幣,假設(shè)每種幣值的數(shù)量都足夠多,編寫程序求組成N元(N為0~10000的非負整數(shù))的不同組合的個數(shù)。
輸入描述:
輸入包括一個整數(shù)n(1 ≤ n ≤ 10000)
輸出描述:
輸出一個整數(shù),表示不同的組合方案數(shù)
輸入例子1:
1
輸出例子1:
1
【解決】
① 動態(tài)規(guī)劃,dp[i][j]表示前i種幣值組合成j元的組合數(shù)。
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] coins = {1,5,10,20,50,100};
long[][] dp = new long[6][n + 1];
Arrays.fill(dp[0],1);
for (int i = 1;i < 6;i ++){
for (int j = 1;j <= n;j ++){
int m = j / coins[i];
for (int k = 0;k <= m;k ++){
dp[i][j] += dp[i - 1][j - k * coins[i]];
}
}
}
System.out.println(dp[5][n]);
}
}
總結(jié)
以上是生活随笔為你收集整理的不同组合方式有四种纸币java_拼凑钱币丶Java教程网-IT开发者们的技术天堂的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 修改 cmd 字体为 Consolas
- 下一篇: 面试中关于Java你所需知道的的一切