diff --git a/DP/Partition Problem.cpp b/DP/Partition Problem.cpp new file mode 100644 index 0000000..b68faa0 --- /dev/null +++ b/DP/Partition Problem.cpp @@ -0,0 +1,53 @@ +#include +using namespace std; + +int dp[101][100001]; +int checker[101][100001]={0}; + +bool partition(int A[],int n,int i,int sum){ + if(sum==0){ + return 1; + } + if(i==n && sum!=0){ + return 0; + } + if(sum<0){ + return 0; + } + if(checker[i+1][sum]==0){ + checker[i+1][sum]=1; + dp[i+1][sum]=partition(A,n, i+1, sum); + } + if(checker[i+1][sum-A[i]]==0){ + checker[i+1][sum-A[i]]=1; + dp[i+1][sum-A[i]]=partition(A,n, i+1, sum-A[i]); + } + return ( dp[i+1][sum] || dp[i+1][sum-A[i]] ) ; +} + +int main(){ + int t; + cin>>t; + while(t--){ + int n; + cin>>n; + int A[n]; + int sum=0; + for(int i=0;i>A[i]; + sum+=A[i]; + } + if(sum%2!=0){ + cout<<"NO"<