您的位置:首页 > 其它

【DFS】nyoj 325 zb的生日

2013-06-08 23:52 363 查看
http://acm.nyist.net/JudgeOnline/problem.php?pid=325

分析:某一个西瓜只能在A堆或者B堆

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

const int NM=30;
int a[NM],dif,n,sum;

void DFS(int res,int k)
{
if(k==n) return;  //每堆至少有一个西瓜,所以终止条件为'k==n'
int t=sum-2*res;
if(t<0) t=-t;
if(t<dif) dif=t;
DFS(res+a[k],k+1);
DFS(res,k+1);
}

int main()
{
int i;
while(~scanf("%d",&n))
{
sum=0;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
sum+=a[i];
}
dif=0xfffffff;
DFS(0,0);
printf("%d\n",dif);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: