这个题又是传说中一个代码6题的那种题.
在vjudge上可以看到6道一毛一样的题.

题面

给两个数t,n和n(不超过12)个正整数,求出所有不同子集,使得它们加起来等于t,输出这些子集.
没有答案puts一个字符串"NONE".

题解

对没错,搜索.

#pragma GCC optimize("Ofast",3)
#include<bits/stdc++.h> Ithea Myse Valgulious //在头文件这一行后面可以不加符号打其它东西,我打了个艾瑟雅上去
namespace chtholly{//fast input and output
#define ll long long
#define p32 putchar(' ') //空格
#define pl puts("") //回车
const double ten[]={1,1e1,1e2,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13,1e14,1e15,1e16,1e17,1e18,1e19};
int read(){int x=0;char c=getchar();for (;!isdigit(c);c=getchar());for (;isdigit(c);c=getchar()) x=x*10+c-'0';return x;}
int write(int x){if (!x) return putchar('0');int bit[20],i,p=0;for (;x;x/=10) bit[++p]=x%10;for (i=p;i;--i) putchar(bit[i]+48);}
int read(double &r){double x=0,t=0;int s=0,f=1;char c=getchar();for (;!isdigit(c);c=getchar()){if (c=='-') f=-1;if (c=='.') goto readt;}for (;isdigit(c)&&c!='.';c=getchar()) x=x*10+c-'0';readt:for (;c=='.';c=getchar());for (;isdigit(c);c=getchar()) t=t*10+c-'0',++s;r=(x+t/ten[s])*f;}
int read(ll &x){x=0;char c=getchar();for (;!isdigit(c);c=getchar());for (;isdigit(c);c=getchar()) x=x*10+c-'0';}
int dwrite(ll x){if (x==0) return putchar(48);int bit[20],p=0,i;for (;x;x/=10) bit[++p]=x%10;for (i=p;i>0;--i) putchar(bit[i]+48);}
int write(double x,int k=6){static int n=ten[k];if (x==0) {putchar('0'),putchar('.');for (int i=1;i<=k;++i) putchar('0');return 0;}if (x<0) putchar('-'),x=-x;ll y=(ll)(x*n)%n;x=(ll)x;dwrite(x),putchar('.');int bit[20],p=0,i;for (;p<k;y/=10) bit[++p]=y%10;for (i=p;i>0;--i) putchar(bit[i]+48);}
#undef ll
};
using namespace chtholly;
using namespace std;
int t,n,a[15],nico,ans[15];
//目前搜索到所有数字的和,目前搜索到第几个数字,枚举的子集有多少个数字
int dfs(int sum,int k,int p)//没有返回值!当void用!
{
int i;
if (sum==t) //如果扫到{nico=1;//标记一下有解for (i=1;i<p-1;++i) write(ans[i]),putchar('+');//输出前面的数和一个+return write(ans[p-1]),pl;//输出最后一个数并换行,return并不需要返回值,只要停止搜索就可以了.}
if (sum>t) return 0;//都大于tot还搜什么搜,走人
for (i=k+1;i<=n;++i){ ans[p]=a[i];//子集的第p个数等于a[i]dfs(sum+a[i],i,p+1);//这些数的和加上a[i],从第i个数开始枚举,去找子集中的下一个数for (;a[i]==a[i+1];++i);//关键!!!!!重要的事情一定要说三遍!避免重复枚举!}
}int main()
{
for (int i;t=read(),n=read();){for (i=1;i<=n;++i) a[i]=read();printf("Sums of "),write(t),puts(":");nico=0,dfs(0,0,1),!nico?puts("NONE"):0;}
}

好了就到这里.谢谢大家的观看.

hdu 1258...... Sum It Up 搜索相关推荐

  1. hdu 1258 Sum It Up(回溯算法)

    题意:从给定的n个正整数中选出m个数(m <= n)使得这m个数的和为给定的total 解法:回溯 /* Author: ACb0y Date: 2010-11-11 ProblemId: hd ...

  2. HDU 1258 Sum It Up

    这题郁闷了,排序过不了,后来仔细想想不用排序, 于是果断删了,没想到删了再杭电能过,在北大不能过,真郁闷了 这题是以简单DFS,在搜到时把结果存起来,然后再暴力搜索,看是否已存在这样的sum,最后一次 ...

  3. HDU.1001 Sum Problem

    原题 HDU.1001 Sum Problem 分类 杂题 题意 计算从1到正整数n的累加和. 输入/输出 要求与格式 输入内容 每行输入一个正整数 输出结果 结果为累加和 输出格式 每个输出结果独占 ...

  4. hdoj - 1258 Sum It Up hdoj - 1016 Prime Ring Problem (简单dfs)

    http://acm.hdu.edu.cn/showproblem.php?pid=1258 关键点就是一次递归里面一样的数字只能选一次. 1 #include <cstdio> 2 #i ...

  5. hdu 4676 Sum Of Gcd 莫队+phi反演

    Sum Of Gcd 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=4676 Description Given you a sequence of ...

  6. hdu 4407 Sum

    http://acm.hdu.edu.cn/showproblem.php?pid=4407 题意:给定初始n个数1..n,两个操作,①1 x y p  询问第x个数到第y个数中与p互质的数的和; ② ...

  7. HDU 1240 Asteroids!(DFS简单搜索)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1240 Asteroids! Time Limit: 2000/1000 MS (Java/Others ...

  8. HDU 漫步校园 (记忆化搜索)

    漫步校园 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submissi ...

  9. HDU 6386 Age of Moyu(搜索)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6386 题意:n个点,m条边,每条边有权值,双向边.你要从1走到n,若路径上的权值一样,则只用花费1即可 ...

最新文章

  1. .NET部分知识点整理
  2. 图形变换动画的小Demo
  3. Spring jdbc 对象Mapper的简单封装
  4. 深度剖析RPC框架的核心设计
  5. qt连接mysql4.7数据库_QT4.7访问MySQL的驱动编译过程
  6. 首期openGauss训练营结营,48个FAQ和全部PPT通通给你,随附62人结营学员名单
  7. 摩托罗拉Edge真机谍照曝光:挖孔瀑布屏+骁龙765
  8. linux 根目录read only,linux – 使readonly / etc可写
  9. new 失败的处理方式
  10. JDK自带的Timer类
  11. Hive Url解析函数
  12. 女性心理学:全球女性学霸时代来临
  13. 将mdf文件转化为excel
  14. FreeCAD源码分析:TechDraw模块
  15. 磁盘结构损坏且无法读取硬盘磁盘结构损坏且无法读取的找回方案
  16. 美国计算机专业大学排名前30,美国计算机专业研究生大学排名TOP30
  17. Snapchat如何突出重围?
  18. uniapp获取屏幕宽度的方式_uni-app如何实现rem自适应手机屏幕尺寸?
  19. element tabs label 插槽
  20. 从小米5看雷军式“互联网思维”的黄昏

热门文章

  1. 科学计算机保研,莘莘学子丨青岛大学计算机科学技术学院保研之路
  2. C语言中const关键字详解
  3. 概率密度变换公式 雅可比矩阵_从理解到认识雅可比矩阵
  4. 杂文随笔 - 为什么你可以不读大学
  5. ERROR 1130 (HY000): Host '113.57.150.82' is not allowed to connect to this MySQL server
  6. 【vue-baidu-map】绘制带方向箭头的【多条】折线
  7. C++实现grpc异步服务器
  8. Ant Design 圣诞节的踩蛋!
  9. wordpress网站使用wechat-social-login插件实现QQ、微信、钉钉、Github、手机号登陆
  10. 主流开源OLAP对比分析