hdu 1258 Sum It Up 搜索
2015-09-20 15:22
274 查看
#include<bits/stdc++.h> using namespace std; int cmp(int a,int b) { return a>b; } int flag,t,n,a[20],use[20]; void dfs(int sum,int now) { int i; if(sum==t) { flag=1; int st=0; for(i=0;i<n;i++) { if(use[i]==1) { if(st==0) st++; else printf("+"); printf("%d",a[i]); } } printf("\n"); return; } if(now==n) return ; for(i=now;i<n;i++) { if(a[i]==a[i-1]&&use[i-1]==0) continue; if(a[i]+sum>t) continue; use[i]=1; dfs(sum+a[i],i+1); use[i]=0; } } int main() { int i; while(~scanf("%d%d",&t,&n)) { if(t==0&&n==0) break; for(i=0;i<n;i++) scanf("%d",&a[i]); sort(a,a+n,cmp); printf("Sums of %d:\n",t); flag=0; for(i=0;i<n;i++) { memset(use,0,sizeof(use)); if(i&&a[i-1]==a[i]) continue; use[i]=1; dfs(a[i],i+1); } if(!flag) printf("NONE\n"); } return 0; }
相关文章推荐
- 一直在路上
- java泛型
- 中国的电信企业不被时代所抛弃。
- JavaScript的函数作用域与作用域链详解
- 不同版本服务器之间的区别与联系
- I/O的上机练习
- OpenCV3.0.0+win10 64位+vs2015环境的下载,安装,配置与属性表的生成
- %( $# > 1 %? if (tid() in trace) %) 是什么意思
- android handler机制和Timer采用
- LeetCode 1.Two Sum
- 20150916谱聚类.md
- UVa1584——Circular Sequence
- compass框架的sprite雪碧图的用法简要
- 【JDBC】day03_数据库连接池
- 第3周项目3——求集合并集
- 【Leetcode】Best Time to Buy and Sell Stock
- LNMP的安装
- Android事件分发完全解析(自己)
- getParameter
- 分区表 FSTAB