#include <bits/stdc++.h>
using namespace std;
long n,dp[110][110*500];
long coin[110],x;
long call(long i1,long wt)
{
if(i1==n)
return 0;
if(dp[i1][wt]!=-1)
return dp[i1][wt];
long prof1=0,prof2=0;
if((wt+coin[i1])<=x)
{
prof1=coin[i1]+call(i1+1,wt+coin[i1]);
}
else
prof1=0;
prof2=call(i1+1,wt);
dp[i1][wt]=max(prof1,prof2);
return dp[i1][wt];
}
main()
{
long ts;
cin>>ts;
while(ts--)
{
long m,i,sum=0;
cin>>n;
for(i=0;i<n;i++)
{
cin>>coin[i];
sum+=coin[i];
}
x=sum/2;
memset(dp,-1,sizeof(dp));
long ans=call(0,0);
ans=sum-(ans*2);
printf("%ld\n",ans);
}
}
using namespace std;
long n,dp[110][110*500];
long coin[110],x;
long call(long i1,long wt)
{
if(i1==n)
return 0;
if(dp[i1][wt]!=-1)
return dp[i1][wt];
long prof1=0,prof2=0;
if((wt+coin[i1])<=x)
{
prof1=coin[i1]+call(i1+1,wt+coin[i1]);
}
else
prof1=0;
prof2=call(i1+1,wt);
dp[i1][wt]=max(prof1,prof2);
return dp[i1][wt];
}
main()
{
long ts;
cin>>ts;
while(ts--)
{
long m,i,sum=0;
cin>>n;
for(i=0;i<n;i++)
{
cin>>coin[i];
sum+=coin[i];
}
x=sum/2;
memset(dp,-1,sizeof(dp));
long ans=call(0,0);
ans=sum-(ans*2);
printf("%ld\n",ans);
}
}
কোন মন্তব্য নেই:
একটি মন্তব্য পোস্ট করুন