Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
142188 | 梁乃元 | 0/1背包问题 | C++ | 解答错误 | 0 | 311 MS | 8164 KB | 636 | 2024-04-06 17:14:23 |
# include <bits/stdc++.h> using namespace std ; int t , n , m , ans , v [1005] , w [1005] , dp [1005] [1005] ; void dfs ( int i , int wi , int vi ) { if ( i > m ) { ans = max ( ans , vi ) ; return ; } if ( wi + w [i] <= n && 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 >> m >> n ; for ( int i = 1 ; i <= n ; i ++ ) { cin >> v [i] >> w [i] ; } ans = 0 ; dfs ( 1 , 0 , 0 ) ; cout << ans << endl ; return 0 ; }