提交时间:2024-04-06 17:14:23

运行 ID: 142188

# 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 ; }