Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
142117 | 梁乃元 | 0/1背包问题 | C++ | 解答错误 | 10 | 330 MS | 8108 KB | 651 | 2024-04-06 16:43:37 |
# include <bits/stdc++.h> using namespace std ; int t , n , m , ans , v [1001] , w [1001] , dp [1001] [1001] ; void dfs ( int i , int wi , int vi ) { if ( i > n ) { if ( vi > ans ) { ans = vi ; } return ; } if ( wi + w [i] <= m && dp [i] [wi + w [i]] < vi + v [i] ) { dp [i] [w [i] + wi] = vi + v [i] ; dfs ( i + 1 , wi + w [i] , vi + v [i] ) ; } if ( dp [i] [wi] < vi) { dp [i] [wi] = vi ; dfs ( i + 1 , wi , vi ) ; } } int main ( ) { cin >> n >> m ; for ( int i = 1 ; i <= n ; i ++ ) { cin >> w [i] >> v [i] ; } ans = 0 ; dfs ( 1 , 0 , 0 ) ; cout << ans << endl ; return 0 ; }