diff --git a/dp_0_1_knapsack.cpp b/dp_0_1_knapsack.cpp new file mode 100644 index 0000000..70548c4 --- /dev/null +++ b/dp_0_1_knapsack.cpp @@ -0,0 +1,79 @@ +#include +using namespace std; + +int man(int a,int b) +{ + if(a>b) + return a; + return b; +} + +int main() +{ + #ifndef ONLINE_JUDGE + freopen("input.txt", "r" ,stdin); + freopen("output.txt", "w" ,stdout); + #endif + int t; + cin>>t; + while(t--) + { + int n; + int max_wt; + cin>>n>>max_wt; + // cout<>knap[i].val; + } + for(int i=0;i>knap[i].wt; + } + int dp[n][max_wt+1]; + for(int j=0;j<=max_wt;j++) + { + int i=0; + if(knap[i].wt<=j) + { + dp[i][j]=knap[i].val; + } + else + dp[i][j]=0; + } + for(int i=0;i +using namespace std; + +int main() +{ + #ifndef ONLINE_JUDGE + freopen("input.txt", "r" ,stdin); + freopen("output.txt", "w" ,stdout); + #endif + + int t; + cin>>t; + while(t--) + { + int n; + cin>>n; + int arr[n]; + for(int i=0;i>arr[i]; + } + int val; + cin>>val; + int dp[n][val+1]; + for(int i=0;i<=val;i++) + { + if(i%arr[0] == 0) + dp[0][i] = 1; + else + dp[0][i] = 0; + } + for(int i=1;ij) + dp[i][j] = dp[i-1][j]; + else + dp[i][j] = dp[i-1][j] + dp[i][j-arr[i]]; + } + } + // for(int i=0;i +using namespace std; +int min_value(int a, int b); + +int min_value(int a, int b) +{ + if(a>t; + while(t--) + { + int n; + cin>>n; + int arr[10][n+1]; + int denom[10]={1,2,5,10,20,50,100,200,500,2000}; + for(int i=0;i<=n;i++) + { + arr[0][i]=i; + } + // cout<=0) + { + arr[i][j] = min_value(arr[i-1][j],arr[i][j-denom[i]]+1); + } + else + { + arr[i][j] = arr[i-1][j]; + } + } + } + int i=9,j=n; + vectorvec; + while(arr[i][j]!=0) + { + if(arr[i-1][j] == arr[i][j]) + { + i--; + // vec.push_back(arr[i][j]); + } + else + { + j=j-denom[i]; + vec.push_back(denom[i]); + } + } + for (int i = 0; i < vec.size(); ++i) + { + cout< +using namespace std; + +int main() +{ + #ifndef ONLINE_JUDGE + freopen("input.txt", "r" ,stdin); + freopen("output.txt", "w" ,stdout); + #endif + int t; + cin>>t; + while(t--) + { + int m,n; + cin>>m>>n; + string st1,st2; + cin>>st1>>st2; + // cout< +using namespace std; +int main() +{ + #ifndef ONLINE_JUDGE + freopen("input.txt", "r" ,stdin); + freopen("output.txt", "w" ,stdout); + #endif + + int t; + cin>>t; + while(t--) + { + int n; + cin>>n; + int arr[n]; + for(int i=0;i>arr[i]; + } + int dp[n]; + for(int i=0;iarr[j] && dp[i]<=dp[j]) + { + dp[i]=dp[j]+1; + } + if(max +using namespace std; + +int main() +{ + #ifndef ONLINE_JUDGE + freopen("input.txt", "r" ,stdin); + freopen("output.txt", "w" ,stdout); + #endif + + int t; + cin>>t; + while(t--) + { + int n; + cin>>n; + int arr[n]; + for(int i=0;i>arr[i]; + } + int dp[n]; + for (int i = 0; i < n; ++i) + { + /* code */ + dp[i] = 0; + } + dp[0] = 0; + for(int i=1;i= i) + { + if(dp[i]==0 || dp[j]+1 < dp[i]) + { + dp[i] = dp[j]+1; + } + } + } + } + // for (int i = 0; i < n; ++i) + // { + // code + // cout< +using namespace std; + +int main() +{ + #ifndef ONLINE_JUDGE + freopen("input.txt","r",stdin); + freopen("output.txt","w",stdout); + #endif + int t; + cin>>t; + while(t--) + { + int n; + cin>>n; + int arr[n+1]; + arr[0]=0; + arr[1]=1; + arr[2]=2; + for(int i=3;i<=n;i++) + { + if(i%2==1) + { + arr[i]=arr[i-1]+1; + } + else + { + arr[i]=arr[i/2]+1; + } + } + cout< +using namespace std; + +int max_three(int a,int b, int c) +{ + if(a>b && a>c) + return a; + if(b>a && b>c) + return b; + else + return c; +} + +int main() +{ + #ifndef ONLINE_JUDGE + freopen("input.txt", "r" ,stdin); + freopen("output.txt", "w" ,stdout); + #endif + + int t; + cin>>t; + while(t--) + { + int n; + cin>>n; + int arr[n][n]; + for(int i=0;i>arr[i][j]; + } + } + + int dp[n][n]; + for(int i=0;i +using namespace std; + +int main() +{ + #ifndef ONLINE_JUDGE + freopen("input.txt", "r" ,stdin); + freopen("output.txt", "w" ,stdout); + #endif + + int t; + cin>>t; + while(t--) + { + int n; + cin>>n; + int arr[n]; + int sum = 0; + for(int i=0;i>arr[i]; + sum=sum+arr[i]; + } + int dp[n][sum]; + for(int i=0;i j+1) + { + dp[i][j] = dp[i-1][j]; + } + else if(arr[i] == j+1) + { + dp[i][j] = 1; + } + else + { + if(dp[i-1][j] == 0) + dp[i][j] = dp[i-1][j-arr[i]]; + else + dp[i][j] = dp[i-1][j]; + } + } + + } + vectorvec; + for(int i=0;i +using namespace std; + +int main() +{ + #ifndef ONLINE_JUDGE + freopen("input.txt", "r" ,stdin); + freopen("output.txt", "w" ,stdout); + #endif + + int t; + cin>>t; + while(t--) + { + long long n; + long long flag = 0; + cin>>n; + long long arr[n]; + long long sum = 0; + for(long long i=0;i>arr[i]; + sum+=arr[i]; + } + // cout< j+1) + { + dp[i][j] = dp[i-1][j]; + } + else if(arr[i] == j+1) + { + dp[i][j] = 1; + } + else + { + if(dp[i-1][j] == 0) + dp[i][j] = dp[i-1][j-arr[i]]; + else + dp[i][j] = dp[i-1][j]; + } + } + if(dp[i][sum-1] == 1) + { + flag = 1; + } + } + // for(int i=0;i