import java.util.ArrayList; import java.util.Scanner; public class 和为T{ static int sum, ans = 0; static int[] arr; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = sc.nextInt(); } sum = sc.nextInt(); dfs(n - 1, 0, ""); System.out.println(ans); } /** * * @param i * 当前数 * @param s * 取的数的和 * @param str * 记录我取了那些数 */ public static void dfs(int i, int s, String str) { // 边界 if (i == -1) { // !str.equals("")表示我最少取了一个 如果输入的是0,那么我可以一个数都不取,但题目是不允许这种情况的 if (!str.equals("") && s == sum) { ans++; System.out.println(str); } return; } // 不取的情况 dfs(i - 1, s, str); // 取的情况 dfs(i - 1, s + arr[i], arr[i] + " " + str); } }
0.0分
3 人评分
成绩转换 (C语言代码)浏览:1004 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:622 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:519 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:1090 |
Hello, world! (C++代码)浏览:1743 |
The 3n + 1 problem (C语言代码)浏览:548 |
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:609 |
川哥的吩咐 (C语言代码)浏览:608 |
格式化数据输出 (C语言代码)浏览:811 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:467 |