您的位置:首页 > 其它

nyoj 927 The partial sum problem

2014-05-16 21:35 281 查看
http://acm.nyist.net/JudgeOnline/problem.php?pid=927

分析:ORZ……

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

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

bool comp(int x,int y){
return x>y;
}

void DFS(int res,int i)
{
if(flag || i>n) return;
if(res==sum){
flag=1;return;
}
if(sum>0 && res+a[i]>sum) return;
if(sum<=0 && res+a[i]<sum) return;

DFS(res+a[i],i+1);
DFS(res,i+1);
}

int main()
{
int i,mmin;
while(~scanf("%d",&n))
{
mmin=-0xfffffff;
for(i=0;i<n;i++) //有负数
scanf("%d",&a[i]);
scanf("%d",&sum);
if(sum>0) sort(a,a+n);
else sort(a,a+n,comp);
flag=false;
DFS(0,0);
if(flag) printf("Of course,I can!\n");
else printf("Sorry,I can't!\n");
}
return 0;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: