幸运的袋子
我这完全找了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());
}
}
}