提交时间:2024-04-06 16:43:37
运行 ID: 142117
# 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 ; }