zoukankan      html  css  js  c++  java
  • Sum It Up(搜索)

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

    include<stdio.h>

    include

    include<string.h>

    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(ssum)
    {
    {
    op=1;
    printf("%d",b[1]);
    for(int i=2; i<bN; i++)
    printf("+%d",b[i]);
    printf(" ") ;
    }
    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(n0)break;
    op=0;
    memset(c,0,sizeof(c));
    for(int i=1; i<=n; i++)
    scanf("%d",&a[i]);
    printf("Sums of %d: ",sum);
    dfs(0,1,1);
    if(op
    0)printf("NONE ");
    }
    return 0;
    }

    梦里不知身是客,一晌贪欢。
  • 相关阅读:
    12.12
    12.11
    1208
    1206
    2018-12-23丛晓强作业
    2018-12-17面向对象总结
    2018-12-17-丛晓强作业
    2018-12-13丛晓强作业
    2018-12-12丛晓强作业
    2018-12-11丛晓强作业
  • 原文地址:https://www.cnblogs.com/dccmmtop/p/5475235.html
Copyright © 2011-2022 走看看