题意理解
记
dp[i]
表示
i
元可以点菜的方案数。对于
代码
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static final int maxm = 10010;
static final int maxn = 120;
static int[] a = new int[maxn];
static int N, M;
static int[] dp = new int[maxm];
public static void main(String[] args) {
FastScanner fs = new FastScanner();
N = fs.nextInt();
M = fs.nextInt();
dp[0] = 1;
for(int i = 1; i <= N; i++) {
a[i] = fs.nextInt();
for(int j = M; j >= a[i]; j--) {
dp[j] += dp[j-a[i]];
}
}
System.out.println(dp[M]);
}
public static class FastScanner {
private BufferedReader br;
private StringTokenizer st;
public FastScanner() {
br = new BufferedReader(new InputStreamReader(System.in));
}
public String nextToken() {
while(st == null || !st.hasMoreElements()) {
try {
st = new StringTokenizer(br.readLine());
} catch (Exception e) {
// TODO: handle exception
}
}
return st.nextToken();
}
public int nextInt() {
return Integer.valueOf(nextToken());
}
}
}