HDU 1258 Sum It Up(dfs 巧妙去重)
传送门:
http://acm.hdu.edu.cn/showproblem.php?pid=1258
Sum It Up
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 7758 Accepted Submission(s): 4067
5 3 2 1 1
400 12 50 50 50 50 50 50 25 25 25 25 25 25
0 0
4
3+1
2+2
2+1+1
Sums of 5:
NONE
Sums of 400:
50+50+50+50+50+50+25+25+25+25
50+50+50+50+50+25+25+25+25+25+25
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<queue>
#include<set>
#include<map>
#include<string>
#include<memory.h>
using namespace std;
#define max_v 25
int sum,n;
int a[max_v];
int ans[max_v];
int flag;
bool cmp(int x,int y)
{
return x>y;
}
void dfs(int now,int s,int f)//现在的和 开始位置 结束位置
{
if(now>sum)//没有搜到
return ;
if(now==sum)//搜到 输出
{
cout<<ans[];
for(int i=;i<f;i++)
{
cout<<"+"<<ans[i];
}
cout<<endl;
flag=;
}
for(int i=s;i<n;i++)
{
ans[f]=a[i];
dfs(now+a[i],i+,f+);
while(i+<n&&a[i]==a[i+])//搜完后,若下一个要搜的和搜完的一样 跳过
{
i++;
}
}
}
int main()
{
while(cin>>sum>>n)
{
if(sum==&&n==)
break;
int allsum=;
for(int i=;i<n;i++)
{
cin>>a[i];
allsum+=a[i];
}
cout<<"Sums of "<<sum<<":"<<endl;
if(allsum<sum)
{
cout<<"NONE"<<endl;
continue;
}
sort(a,a+n,cmp);
flag=;
dfs(,,);
if(flag==)
{
cout<<"NONE"<<endl;
}
}
return ;
}
HDU 1258 Sum It Up(dfs 巧妙去重)的更多相关文章
- HDOJ(HDU).1258 Sum It Up (DFS)
HDOJ(HDU).1258 Sum It Up (DFS) [从零开始DFS(6)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架/双 ...
- (step4.3.4)hdu 1258(Sum It Up——DFS)
题目大意:输入t,n,接下来有n个数组成的一个序列.输出总和为t的子序列 解题思路:DFS 代码如下(有详细的注释): #include <iostream> #include <a ...
- HDU 1258 Sum It Up(DFS)
题目链接 Problem Description Given a specified total t and a list of n integers, find all distinct sums ...
- hdu 1258 Sum It Up (dfs+路径记录)
pid=1258">Sum It Up Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- hdu 1258 Sum It Up(dfs+去重)
题目大意: 给你一个总和(total)和一列(list)整数,共n个整数,要求用这些整数相加,使相加的结果等于total,找出所有不相同的拼凑方法. 例如,total = 4,n = 6,list = ...
- HDU 1258 Sum It Up (DFS)
Sum It Up Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...
- HDU 1258 Sum It Up
Sum It Up Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...
- HDOJ(HDU).1016 Prime Ring Problem (DFS)
HDOJ(HDU).1016 Prime Ring Problem (DFS) [从零开始DFS(3)] 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架 ...
- HDU 1241 Oil Deposits --- 入门DFS
HDU 1241 题目大意:给定一块油田,求其连通块的数目.上下左右斜对角相邻的@属于同一个连通块. 解题思路:对每一个@进行dfs遍历并标记访问状态,一次dfs可以访问一个连通块,最后统计数量. / ...
随机推荐
- 转-------CNN图像相似度匹配 2-channel network
基于2-channel network的图片相似度判别 原文地址:http://blog.csdn.net/hjimce/article/details/50098483 作者:hjimce 一.相 ...
- 设置ibus为默认输入法
/etc/profile 文件中编辑 export INPUT_METHOD="ibus"
- TOJ 3176 Challenge from XOR
Description Mr. AngelClover just learnt XOR on his Computer Class. XOR is a bit arithmetic operator ...
- 信号和槽:Qt中最差劲的创造
不要被这个标题唬住了,实际上我是非常认可Qt的.在C++实现的开源产品中没有哪一个的API风格比得上Qt,拥有高度一致性,符合常识,符合直觉,几乎不用学就可以直接上手.或许是由于我们摆脱不了马太效应的 ...
- Task的一些用法总结
一.Task和多线程以及异常的捕获示例代码: static void Main(string[] args) { // 产生CancellationToken的类,该类允许使用Cancel方法终止线程 ...
- mobile开发技巧(转)
1.隐藏地址栏 很多文档介绍通过调用 window.scrollTo(0, 1); 就可以隐藏地址栏,但是通过实践发现隐藏地址栏还是真够坑爹的啊,只调用这一句话一般不会起作用,我们需要 functio ...
- 移动平台的meta标签(转)
1.Meta 之 viewport 说到移动平台meta标签,那就不得不说一下viewport了,那么什么是viewport呢? viewport即可视区域,对于桌面浏览器而言,viewport指的就 ...
- java XML解析成Map
1.需要解析的文件.xml <?xml version="1.0" encoding="UTF-8"?> <request> <r ...
- 使用Access作数据库
import java.sql.*; public class ConnectAccess { public static void main(String args[]){ ConnectAcces ...
- C#基础知识-引用类型和值类型的区别(六)
在第一篇中我们介绍了C#中基本的15种数据类型,这15种数据类型中又分为两大类,一种是值类型,一种是引用类型.值类型有sbyte.short.long.int.byte.ushort.uint.ulo ...