hdoj1587
Flowers
1 //完全背包
2 #include<iostream>
3 #include<stdio.h>
4 #include<string.h>
5
6 using namespace std;
7 int N, M, f[10000], V[1000];
8 int main()
9 {
10 while (scanf("%d%d", &N, &M) != EOF) {
11 memset(f, 0, sizeof(f));
12 for (int i = 1; i <= N; ++i)
13 scanf("%d", V + i);
14 for (int i = 1; i <= N; ++i) {
15 for (int v = V[i]; v <= M; ++v) {
16 if (f[v - V[i]] + 1 > f[v])
17 f[v] = f[v - V[i]] + 1;
18 }
19 }
20 printf("%d\n", f[M]);
21 }
22 }
2 #include<iostream>
3 #include<stdio.h>
4 #include<string.h>
5
6 using namespace std;
7 int N, M, f[10000], V[1000];
8 int main()
9 {
10 while (scanf("%d%d", &N, &M) != EOF) {
11 memset(f, 0, sizeof(f));
12 for (int i = 1; i <= N; ++i)
13 scanf("%d", V + i);
14 for (int i = 1; i <= N; ++i) {
15 for (int v = V[i]; v <= M; ++v) {
16 if (f[v - V[i]] + 1 > f[v])
17 f[v] = f[v - V[i]] + 1;
18 }
19 }
20 printf("%d\n", f[M]);
21 }
22 }