Monday, 27 July 2015

Subset sum problem -Code in C++

  #include <cmath>  
 #include <cstdio>  
 #include <vector>  
 #include <iostream>  
 #include <algorithm>  
 using namespace std;  
 int main()  
 {  
   int sum=15,arr[10000]={1,2,4,5,9},i,j,n=5;  
   int **a=(int **)malloc((n+1)*sizeof(int*));  
   for(i=0;i<=n;i++)  
     a[i]=(int*)malloc((sum+1)*sizeof(int));  
   for(i=0;i<=n;i++)  
     {  
       for(j=0;j<=sum;j++)  
       {  
       if(j==0)  
        a[i][j]=1;  
       else  
         a[i][j]=0;  
       }  
     }  
   for(i=1;i<=n;i++)  
     {  
       for(j=1;j<=sum;j++)  
       {  
        if(arr[i-1]>j)  
         a[i][j]=a[i-1][j];  
        else  
         a[i][j]=max(a[i-1][j-arr[i-1]],a[i-1][j]);  
       }  
     }  
   for(i=0;i<=n;i++)  
     {  
     cout<<endl;  
     for(j=0;j<=sum;j++)  
       {  
       cout<<a[i][j]<<" ";  
       }  
     }  
     cout<<endl;  
   cout<<((a[i-1][j-1])?"yes":"no");  
   return 0;  
 }  

No comments:

Post a Comment