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 }