// 动态规划 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int sum = sc.nextInt(); int[] a = new int[n + 1]; for (int i = 1; i <= n; i++) { a[i] = sc.nextInt(); } long[][] dp = new long[n + 1][sum + 1]; for (int i = 0; i <= n; i++) { dp[i][0] = 1; } for (int j = 1; j <= sum; j++) { dp[0][j] = 0; } for (int i = 1; i <= n; i++) { for (int j = 1; j <= sum; j++) { if (a[i] <= j) { dp[i][j] = dp[i - 1][j] + dp[i - 1][j - a[i]]; } else { dp[i][j] = dp[i - 1][j]; } } } System.out.println(dp[n][sum]); } }
点赞 评论

相关推荐

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