#include "stdio.h"
int n,sum,key;
int a[21];
void dfs(int w,int k,int cnt)
{
if (k>n) return ;
if (w==k) dfs(w,k+1,cnt);
else
{
cnt+=a[k];
if (cnt>=key && cnt-a[w]<key) sum++;
dfs(w,k+1,cnt);
cnt-=a[k];
dfs(w,k+1,cnt);
}
}
int main()
{
int t,i;
scanf("%d",&t);
while (t--)
{
scanf("%d",&n);
sum=0;
for (i=1;i<=n;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
if (n==1)
{
printf("1\n");
continue;
}
key=sum/2+1;
for (i=1;i<=n;i++)
{
sum=0;
dfs(i,1,a[i]);
printf("%d",sum);
if (i!=n) printf(" ");
}
printf("\n");
}
return 0;
}
HDU 1557 水爆搜
最新推荐文章于 2020-02-28 15:34:47 发布