二维费用的背包。。。。。我的第一道背包啊啊啊啊啊 代码如下:::::(*^__^*) 嘻嘻
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 int main() 6 { 7 int n, m, k, s, i, j, l; 8 int v[101], wi[101]; 9 int f[101][101]; 10 11 while( scanf( "%d%d%d%d", &n, &m, &k, &s ) != EOF ) 12 { 13 for( i = 0; i < k; i ++ ) 14 { 15 scanf( "%d%d", &wi[i], &v[i]); 16 } 17 memset( f, 0, sizeof(f) ); 18 for( i = 0; i < k; i ++ ) 19 { 20 for( j = v[i]; j <= m; j ++ ) 21 { 22 for( l = 1; l <= s; l ++ ) 23 { 24 if( f[l-1][j-v[i]] + wi[i] > f[l][j] ) 25 f[l][j] = f[l-1][j-v[i]] + wi[i]; 26 } 27 } 28 } 29 for( j = 0; j <= m && f[s][j] < n; j ++ ); 30 if( j > m ) 31 { 32 printf( "-1\n" ); 33 } 34 else 35 { 36 printf( "%d\n", m - j ); 37 } 38 } 39 return 0; 40 }