码迷,mamicode.com
首页 > 其他好文 > 详细

hdoj 1258(DFS)

时间:2018-07-09 16:27:23      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:++   stream   控制   col   set   algo   include   none   cstring   

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
int a[100],n,m,b[100],flag;
void printf(int k)
{
    for(int i=0;i<k;i++)
    {
        printf("%d",b[i]);
        if(i!=k-1)
        printf("+");
    }
    printf("\n");
}
void dfs(int k,int sum,int t)
{

    if(sum>n||k>m)
    return;
    if(sum==n)
    {
        printf(t);
        flag=1;
        return;
    }    
    b[t]=a[k];
    dfs(k+1,sum+a[k],t+1);
    while(k+1<m&&a[k+1]==a[k])//去重,可以控制重复数字的个数。
    {
        k++;
    }
    dfs(k+1,sum,t);
}
int main(int argc, char *argv[])
{
    
    while(cin>>n>>m)
    {
        if(n==0&&m==0)
        break;
        for(int i=0;i<m;i++)
        {
            cin>>a[i];
        }
        memset(b,0,sizeof(b));
        flag=0;
        printf("Sums of %d:\n",n);
        dfs(0,0,0);
        if(!flag)
        printf("NONE\n");
        
    }
    return 0;
}

hdoj 1258(DFS)

标签:++   stream   控制   col   set   algo   include   none   cstring   

原文地址:https://www.cnblogs.com/huluxin/p/9284108.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!