POJ_1564_dfs
题目描述:
每组数据给定一个大的数,和一系列降序的数值,要求列出不重复的数值中挑选的数的和为大数的方案,每一种方案里,每个数值最多只能使用一次。
思路:
dfs基础题,每次记录大数和当前总和的差值,当前位置,以及当前使用的数的数量,将每一个使用的数放进ans数组中。由于是dfs,每一种情况使用的数字放入ans中可以将上一种情况覆盖,所以不需要考虑初始化。
要注意的是,方案不能重复,所以每一层dfs中,下一个数值的选择必须是不重复的。
#include<cstdio>
#include<iostream>
using namespace std; int t,n,x[],flag,ans[]; void dfs(int un_sum,int where,int num)
{
if(!un_sum)
{
cout << ans[];
for(int i = ;i < num;i++) cout << '+' << ans[i];
cout << endl;
flag = ;
return;
}
else if(where > n)
{
return;
}
ans[num] = x[where];
dfs(un_sum-x[where],where+,num+);
for(int i = where+;i <= n;i++)
{
if(x[i] != x[i-] && un_sum >= x[i])
{
ans[num] = x[i];
dfs(un_sum-x[i],i+,num+);
}
}
}
int main()
{
while(cin >> t >> n && t && n)
{
flag = ;
for(int i =;i <= n;i++) cin >> x[i];
cout << "Sums of " << t << ':' << endl;
for(int i = ;i <= n;i++)
{
if(t >= x[i])
{
dfs(t,i,);
break;
}
}
if(flag) cout << "NONE" << endl;
}
return ;
}
POJ_1564_dfs的更多相关文章
随机推荐
- SpringBoot-2.1.1系列一:使用https
1.什么是https? HTTPS中文名称:超文本传输安全协议,是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要 ...
- 线程池:ThreadPoolExecutor的使用
ThreadPoolExecutor配置 一.ThreadPoolExcutor为一些Executor提供了基本的实现,这些Executor是由Executors中的工厂 newCahceThread ...
- 用 Serverless 快速搭建个人相册网站
日常生活中我们经常会拍摄一些视频.照片等,这些文件会占用比较多的存储空间.本文将介绍一种方法:利用 ThumbsUp 工具,结合 Serverless Framework 的 component 快速 ...
- Hyperledger Fabric1.4 安装
Hyperledger Fabric 依赖的软件版本查看官方 github 地址 https://github.com/hyperledger/fabric 下文件 /docs/source/prer ...
- Docker——WIN7 安装 Docker实战与入门
1.Docker简介 Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go 语言实现. 项目后来加入了 Lin ...
- 一个按键搞定日常git操作
Git is a free and open source distributed version control system designed to handle everything from ...
- python爬虫——scrapy的使用
本文中的知识点: 安装scrapy scrapy的基础教程 scrapy使用代理 安装scrapy 由于小哥的系统是win7,所以以下的演示是基于windows系统.linux系统的话,其实命令都一样 ...
- redis 支持事务
pipe = conn.pipeline(transaction=True) pipe.multi() pipe.set(') pipe.hset('k3','n1',666) pipe.lpush( ...
- Java语法进阶16-Lambda-Stream-Optional
Lambda 大年初二,大门不出二门不迈.继续学习! 函数式接口 Lambda表达式其实就是实现SAM接口的语法糖,所谓SAM接口就是Single Abstract Method,即该接口中只有一个抽 ...
- Basic Thought / Data Structure: 前缀和 Prefix Sum
Intro: 在OI中,前缀和是一种泛用性很高的数据结构,也是非常重要的优化思想 Function: 求静态区间和 模板题:输入序列\(a_{1..n}\),对于每一个输入的二元组\((l,r)\), ...