频道栏目
首页 > 程序开发 > 软件开发 > C++ > 正文
HDU-1258-Sum It Up
2012-07-27 10:26:18      个评论      
收藏   我要投稿

注意每个数只能用一次,且不能出现重复的等式


[cpp]
#include<stdio.h> 
#include<string.h> 
#include<stdlib.h> 
int a[20],ans[20]; 
int sum,n,flag; 
void dfs(int x,int count,int m) 

    int i,last; 
    if(m>sum) 
    return; 
    if(m==sum) 
    { 
        flag=1; 
        for(i=1;i<count;i++) 
        { 
            if(i==count-1) 
            printf("%d\n",ans[i]); 
            else 
            printf("%d+",ans[i]); 
        } 
    } 
    last=-1; 
    for(i=x;i<=n;i++) 
    { 
        if(last!=a[i]) 
        { 
            ans[count]=a[i]; 
            last=a[i]; 
            dfs(i+1,count+1,m+a[i]); 
        } 
    } 
    return; 

int main() 

    int i; 
    while(scanf("%d%d",&sum,&n),sum||n) 
    { 
        for(i=1;i<=n;i++) 
        scanf("%d",&a[i]); 
        flag=0; 
        printf("Sums of %d:\n",sum); 
        dfs(1,1,0); 
        if(!flag) 
        printf("NONE\n"); 
    } 
    return 0; 


作者:Cambridgeacm
点击复制链接 与好友分享!回本站首页
相关TAG标签
上一篇:Hdu 2430 Beans (数据结构_单调队列)
下一篇:http://acm.hdu.edu.cn/showproblem.php?pid=1020大水题一个不解释
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站