hdu1258 DFS+回溯

来源:互联网 发布:tensorflow源码结构 编辑:程序博客网 时间:2024/05/20 13:39
#include <iostream>#include <cstdio>using namespace std;int tmp[15],a[15];int t,n;int flag;int dfs(int s,int index,int cnt){    if(s==t)    {        flag=1;        printf("%d",tmp[0]);        for(int i=1;i<cnt;i++)            printf("%+d",tmp[i]);            printf("\n");        return 0;    }        for(int j=index;j<n;j++)        {            if(j==index||a[j-1]!=a[j])            {                tmp[cnt]=a[j];                dfs(s+a[j],j+1,cnt+1);//如果把j+1改成index+1就是分方向的相加结果            }        }}int main(){    int i,j;    while(scanf("%d%d",&t,&n)!=EOF)    {        if(t==0&&n==0)  break;        for(i=0;i<n;i++)            scanf("%d",&a[i]);        flag=0;        printf("Sums of %d:\n",t);        dfs(0,0,0);        if(!flag)   printf("NONE\n");    }    return 0;}

 
原创粉丝点击