算法分析-子集和数,回溯法
#include <iostream>
#include <algorithm>/*题目描述
子集和问题的一个实例为〈S,t〉。其中,S={ 1 x , 2 x ,…, n x }是一个正整数的集合,c是一个正整数。子集和问题判定是否存在S的一个子集S1,使得s1中的各元素之和等于c。
输入
第一行有2个正整数n和c,n表示S的大小,c是子集子集和的目标值。接下来的1行中,有n个正整数,表示集合S中的元素。
输出
输出子集和问题的解,非下标,同时在n个数为升序的前提下,所出的子集顺序是唯一的。并输出共有几种组合,如果无解,则输出0
注意,每个数字之间空2个空格,每行最后的数字也要空两个空格
样例输入
10 60
30 46 86 5 11 66 84 49 69 55
样例输出
5 55
11 49
2
*/
using namespace std;
const int N = 1e5 + 10;
int w[N], vis[N];
int n, M;
int ans;void SumOfSet(int s, int k) {// s为sum,前几个数的和if (k >= n) return;vis[k] = 1;if (s + w[k] == M) {for (int i = 0; i <= k; i++) {if (vis[i]) cout << w[i] << " ";}cout << endl;ans++;}else if (s + w[k] <= M) {SumOfSet(s + w[k], k + 1);}// k在退出上面的递归后,k已经加了1,之后和后面的数继续递归if (s + w[k + 1] <= M) {vis[k] = 0;SumOfSet(s, k + 1);}
}int main() {// n:几个数// M:和数cin >> n >> M;for (int i = 0; i < n; i++) cin >> w[i];sort(w, w + n);SumOfSet(0, 0);cout << ans << endl;return 0;
}
算法分析-子集和数,回溯法相关推荐
- 算法分析与设计——回溯法实验报告
算法导论 课程设计 成 绩 题 目: 回 溯 法 学院班级: 1613013 学 号: 16130130216 姓 ...
- 算法分析五:回溯法与分⽀限界法
一.回溯法 1. 基本思想与解题步骤 基本思想: 把问题的解空间转化成了图或者树的结构表⽰,然后使⽤深度优先搜索策略进⾏遍历,遍历的过程中记录和寻找所有可⾏解或者最优解. 解题步骤: 针对所给问题,定 ...
- 78. 子集022(回溯法)
一:题目 给你一个整数数组 nums ,数组中的元素 互不相同 .返回该数组所有可能的子集(幂集). 解集 不能 包含重复的子集.你可以按 任意顺序 返回解集. 示例 1: 输入:nums = [1, ...
- 图的m着色问题(子集树回溯法)
解空间:子集树 题目比较容易,直接附代码 代码 #include <iostream> using namespace std; int n; //图的顶点数 int x[100]; // ...
- 最大团问题(子集树回溯法)
解空间:子集树 可行性约束函数:顶点t到已经选入顶点集中每一个顶点之间都有边 限界函数:有足够多的可选择的顶点使得算法有可能在右子树中找到更大的团(即cn+(n-t)>bestn) 复杂度分析: ...
- leetcode 698. Partition to K Equal Sum Subsets | 698. 划分为k个相等的子集(回溯法)
题目 https://leetcode.com/problems/partition-to-k-equal-sum-subsets/ 题解 一上来以为是 dp(想到了左神讲的,将一个数组分成两个尽可能 ...
- 算法设计与分析第5章 回溯法(二)【回溯法应用】
第5章 回溯法 5.2 应用范例 1.0-1背包问题 有n件物品和一个容量为c的背包.第i件物品的重量是w[i],价值是p[i].求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和 ...
- 回溯法之递归回溯和迭代回溯
回溯法有通用解题法之称,它可以系统的搜索一个问题的所有解或者任意解.它在问题的解空间树中,按深度优先策略从根节点出发搜索解空间树,算法搜索至解空间树的任意一个结点时,先判断该节点如(子树)是否包含 ...
- 回溯法实例详解(转)
概念 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就"回溯"返回,尝试别的路径. 回溯法是一种选优搜索法,按选优条件向前 ...
最新文章
- 企业网络推广——企业网络推广专员浅析网站关键词优化要注意哪些问题
- 第四周作业 wcPro
- linux ls什么意思,linux – 你如何确定bash ls的颜色是什么意思?
- Python+selenium 自动化-基本环境搭建,调用selenium库访问百度查询天气实例演示
- linux下SVN配置笔记(转)
- 波音737-800座位图哪个好_澳媒一张图揭秘,飞机选座秘诀!经济舱最舒适的位置在这儿...
- 你知道void和Void的区别吗
- 函数使用了堆栈的字节超过_在C语言中如何访问堆栈?
- 单链表的基本操作-查找
- mysql 查询排序位置_MySQL-基础查询与排序
- React Native 0.20官方入门教程
- python 自动化发送邮件_干货 | 解放双手,用Python实现自动发送邮件
- 高效记忆/形象记忆(10)110数字编码表 41-50
- 电脑缺少网卡驱动不能上网
- java开发mdm平台_Apple iOS MDM开发流程
- java定义方法判断字符串是否对称- 例如:“abcba“、“上海自来水来自海上“均为对称字符串。
- 2019年6月28日 星期五 今日计划
- 面试系列-2 我终于弄清楚了redis数据结构之string应用场景
- Week8 CSP模拟 T2 HRZ学英语
- 应用安全系列之二十九:密码管理
热门文章
- 华为交换机端口及业务的常用查询命令
- 无人驾驶感知篇之目标跟踪(十八)
- Nginx+Keepalived高可用集群应用实践
- 自动化设备数据采集系统如何实现
- CAD延伸功能如何使用?CAD延伸应用实例
- 从《从小工到专家》的“道”到大厂的“法术器”-哲学篇
- 建筑室内设计与计算机应用,建筑室内设计与室内艺术设计与艺术设计的区别?...
- Telnet,Mstsc,SSH,FTP之间的比较和区别
- 使用python进行收据搜集示例之different_format_data_processing
- 电子书厂商集体炮轰盛大 阵营模式分歧初现