动态规划 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNextInt()) { int n = scanner.nextInt(); int sum = scanner.nextInt(); int[] arr = new int[n]; for (int i = 0; i < n; ++i) { arr[i] = scanner.nextInt(); } long result = process(arr, n, sum); System.out.println(result); } } private static long process(int[] arr, int n, int sum) { long[][] dp = new long[n][sum + 1]; int i, j; for (i = 0; i < n; ++i) { dp[i][0] = 1; } if (arr[0] <= sum) { dp[0][arr[0]] = 1; } for (i = 1; i < n; ++i) { for (j = 1; j <= sum; ++j) { dp[i][j] = dp[i-1][j]; if (j - arr[i] >= 0) { dp[i][j] += dp[i - 1][j - arr[i]]; } } } return dp[n-1][sum]; } }
点赞 1

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务