Sum It Up(搜索)
Sum It Up(搜索)
1944864971 发表于2年前
Sum It Up(搜索)
  • 发表于 2年前
  • 阅读 2
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

http://acm.hdu.edu.cn/showproblem.php?pid=1258

include

include

include

include

using namespace std;
int sum,n;
int a[1005],b[1005],c[1005],op=0;
void dfs(int s,int start,int bN)
{
if(s==sum)
{
{
op=1;
printf("%d",b[1]);
for(int i=2; i<bN; i++)
printf("+%d",b[i]);
printf("\n") ;
}
return;
}
for(int i=start; i<=n; i++)///每次都是往后面找,用start来记录每次搜索的起始位置
{
if(s+a[i]<=sum)///满足条件即可,
{
b[bN]=a[i];
dfs(s+a[i],i+1,bN+1);
while(i+1<=n&&a[i]==a[i+1])i++;///精华,,此句就可以达到去重的目的,即本次搜索完毕后(收到结果或者没有收到结果)
///看下一个搜索的是否和当前的相同,相同则跳过(自己运行一遍)
}
}
}
int main()
{
while(scanf("%d%d",&sum,&n))
{
if(n==0)break;
op=0;
memset(c,0,sizeof(c));
for(int i=1; i<=n; i++)
scanf("%d",&a[i]);
printf("Sums of %d:\n",sum);
dfs(0,1,1);
if(op==0)printf("NONE\n");
}
return 0;
}

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 57
码字总数 0
×
1944864971
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: