揹包解決數字組合
阿新 • • 發佈:2019-01-30
import java.util.Scanner; /** * @author Oxygen * @date 2018年8月30日 */ public class Main{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int N = scanner.nextInt(); int S = scanner.nextInt(); int[] data = new int[N]; for (int i = 0; i < data.length; i++) { data[i] = scanner.nextInt(); } int[][] dp = new int[N + 1][S + 1]; for (int i = 1; i < N + 1; i++) { for (int j = 1; j < S + 1; j++) { if (j == data[i - 1]) { dp[i][j] = 1; } } } for (int i = 1; i < N + 1; i++) { for (int j = 1; j < S + 1; j++) { if (j >= data[i - 1]) { dp[i][j] += dp[i - 1][j] + dp[i-1][j - data[i - 1]]; } else { dp[i][j] = dp[i - 1][j]; } } } System.out.println(dp[N][S]); } }