hdu2152 Fruit(母函数)
import java.util.Scanner;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner cin = new Scanner(System.in);
int N, M;
while(cin.hasNext()) {
N = cin.nextInt();
M = cin.nextInt();
int i, sum = 0;
for(i = 0; i < N; i++) {
fruit[i][0] = cin.nextInt();
fruit[i][1] = cin.nextInt();
sum += fruit[i][1];
}
genfun(N, M, sum);
System.out.println(c1[M]);
}
}
public static void genfun(final int n, final int m, final int sum) {
int i, j, k;
for(i = 0; i <= m; i++) {
c1[i] = 0;
c2[i] = 0;
}
c1[0] = 1;
for(i = 0; i < n; i++) {
for(j = 0; j <= sum; j++) {
for(k = fruit[i][0]; (k + j <= m) && (k <= fruit[i][1]); k++) {
c2[k + j] += c1[j];
}
}
for(j = 0; j <= sum; j++) {
c1[j] = c2[j];
c2[j] = 0;
}
}
}
final static int[] c1;
final static int[] c2;
final static int[][] fruit;
static {
c1 = new int[10001];
c2 = new int[10001];
fruit = new int[101][2];
}
}
浙公网安备 33010602011771号