上链接:杭电1557
题目大意:
根据一个队的票算出其权力值(什么鬼,还是看题去吧,反正中文的)
DFS
贴代码:
#include <iostream>
using namespace std;
int sum;
int count, j, m, minV, best;
int a[105], b[105], flag[105];
void DFS(int k, int p, int c)
{
if(k > p)
{
if(minV+c>sum && minV<=sum)
count++;
if(count>=best)
best = count;
return ;
}
DFS(k+1, p, c);
minV = minV + b[k];
flag[k] = 1;
DFS(k+1, p, c);
minV = minV - b[k];
flag[k] = 0;
}
int main()
{
int i,k,n;
cin>>n;
while(n--)
{
sum=0;
cin>>m;
for(i=1;i<=m;i++)
{
cin>>a[i];
sum = sum + a[i];
b[i] = 0;
flag[i] = 0;
}
sum = sum/2;
for(i=1; i<=m; i++)
{
count = 0;
best = -1;
flag[i] = 1;
minV = 0;
j = 1;
for(k=1; k<=m; k++)
{
if(flag[k] == 0)
{
b[j] = a[k];
j++;
}
}
DFS(1, j-1, a[i]);
if(i<m)
cout<<best<<" ";
else
cout<<best;
}
cout<<endl;
}
return 0;
}
我看了一下网上有个母函数,有空去看看