幸运的袋子 我这完全找了P了一个Java的,还是数组越界啊 import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; public class Main { static ArrayList<Integer> num=new ArrayList<>(); static ArrayList<Integer> val=new ArrayList<>(); static int n; static int  nxt []=new int[1005]; static int dfs(int i, int s, int p) { if (i >= n) return s>p?1:0; if (val.get(i) > 1 && s < p) return 0; return dfs(i + 1, s + val.get(i), p * val.get(i)) + dfs(nxt[i], s, p); } static int solve() { val = num; int p = n; for (int i = n - 1; i >= 0; i--) { if (i < n - 1 && val.get(i + 1) > val.get(i)) p = i + 1; nxt[i] = p; } return dfs(0, 0, 1); } public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()) { n=in.nextInt(); for(int i = 0; i < n; i++){                num.add(in.nextInt());    } Collections.sort(num);   System.out.println(solve()); }         } }
点赞 3

相关推荐

牛客网
牛客企业服务