0-1 knapsack(Dynamic Programming).
#include <bits/stdc++.h> using namespace std ; #define shailesh ios :: sync_with_stdio ( false ); cin. tie ( 0 ); cout. tie ( 0 ); #define ll long long int #define vi vector < int > #define pii pair < int , int > #define vii vector < pii > #define rep ( i , a , b ) for ( int i = a; i < b; i ++ ) #define ff first #define ss second const int N = 1 e 3 + 2 , MOD = 1 e 9 + 7 ; int val[N], wt[N]; int dp[N][N]; int Knapsack ( int n , int w ){ if ( w <= 0 ) return 0 ; if ( n <= 0 ) return 0 ; if (dp[ n ][ w ] !=- 1 ) return dp[ n ][ w ]; if ( w < wt[ n - 1 ]) dp[ n ][ w ] = Knapsack ( n - 1 , w ); else dp[ n ][ w ] = max ( Knapsack ( n - 1 , w ), Knapsack ( n - 1 , w - wt[ n - 1 ]) + val[ n - 1 ]); return dp[ n ][ w ]; } int main (){ shailesh rep (i, 0 , N){ rep (j, 0 , N) dp[i][j] =- 1 ; } int n; cin >> n; re