C语言回溯算法求幂集,回溯求幂集算法
幂集的每个元素是一个集合或者是一个空集。拿集合{A, B, C}来举例,这个集合的幂集为{ {A, B, C}, {A , B}, {A , C}, {B, C},{A}, {B}, {C}, {}}。可以看出分为3中状态:
空集
是集合中的一个元素组成的集合
是集合中的任意两个元素组成的集合
是集合中的三个元素组成的集合,就是它本身
下面用回溯递归的思想来实现求幂集的算法:
算法思想,集合中每个元素有两种状态,在幂集元素的集合中,不在集合中。可以用一颗二叉树形象的表示回溯遍历的过程
#include
using namespace std;
char *result;
char *element;
void OutputPowerSet(int len){ //输出幂集中的元素
cout<
int eln = 0;
for(int i = 0; i < len; i++){
if(result[i] != 0)
{
if(eln > 0)
cout<
else
cout<
eln++;
}
}
cout<
}
void PowerSet(int k,int n){
if(k > n)
{
OutputPowerSet(n);
}else{
result[k-1] = element[k-1]; //元素在幂集元素集合中
PowerSet(k+1,n);
result[k-1] = 0;//元素不在幂集元素集合中
PowerSet(k+1,n);
}
}
int main(){
int num;
cin>>num;//输出要求幂集的初始集合元素个数
element = new char[num];
result = new char[num];
int index = 0;
while(index < num){
cin>>element[index]; //输入集合元素,这里用字符代替
index++;
}
PowerSet(1,num);
}
C语言回溯算法求幂集,回溯求幂集算法相关推荐
- 《数据结构、算法与应用 —— C++语言描述》学习笔记 — 回溯法
<数据结构.算法与应用 -- C++语言描述>学习笔记 - 回溯法 一.算法思想 二.货箱装载 1.问题描述 2.回溯算法 3.实现 4.测试代码 一.算法思想 回溯法是搜索问题解的一种系 ...
- c语言tarjan算法,无向图求割点和割边——Tarjan算法
无向图中求割点集和割边集--Tarjan算法 割点和割边 定义 在一个无向图中,如果删除了某个顶点及与之相连的所有边,产生了一更大连通分量的子图,这样的顶点被称为割点或关节点.对于一个图的所有割点的集 ...
- c语言有参有类最小公倍数,C语言求最大公约数和最小公倍数算法
C 语言求最大公约数和最小公倍数算法 C 语言求最大公约数和最小公倍数可以说是C 语言编程学习中一个重点和难点,它常常作为计算机专业学生参加各种考试必须要把握的内容.其算法方面除常用的辗转相除法外.还 ...
- C语言求最大公约数GCD的算法(附完整源码)
C语言求最大公约数GCD的算法 C语言求最大公约数GCD的算法完整源码(定义,实现,main函数测试) C语言求最大公约数GCD的算法完整源码(定义,实现,main函数测试) #include < ...
- 复化梯形公式求椭圆周长C语言,C语言编程解线性,非线性方程,龙贝格算法.docx
C语言编程解线性,非线性方程,龙贝格算法 课程设计课程名称:数值计算B 设计题目:数值计算B课程设计学号:姓名:完成时间: 2015年10月27日题目一:非线性方程求根一.题目假设人口随时间和当时人口 ...
- 严蔚敏《数据结构》C语言版 第三章 算法3.4 表达式求值
这个我是看到华为今年招聘的机试题的第三题. 输入一串算术表达式的字符串,把它的结果算出来. 1 //表达式求值(输入.输出和中间结果均只能是0-9)运算符仅限+-*/. 2 #include < ...
- 基于求导的快速exp()算法,exp()快速计算,exp导数算法,exp函数C语言实现
基于求导的快速exp()算法 如果需要得到exp(x)的连续数列,那么常规方法需要一个一个数的运算,运算量会非常大.此时可以使用以下方法,得到连续的exp(x)数列. 我们知道的导数等于本身.设 求导 ...
- 0x08算法设计与分析复习(二):算法设计策略-回溯法2
参考书籍:算法设计与分析--C++语言描述(第二版) 算法设计策略-回溯法 子集和数 问题描述 已知n个不同的正数wi(0≤i≤n−1)的集合,求该集合的所有满足条件的子集,使得每个子集中的正数之和等 ...
- LeetCode算法题2:求字符串b在字符串a中的起始下标
文章目录 前言 一.题目描述 二.思路 1.朴素匹配 1.1Java直接实现 2.kmp模式匹配 总结 前言 本系列文章为leetCode刷题笔记,仅供参考. 一.题目描述 若字符串 a 包含字符串 ...
- 五大常用算法之四:回溯法
http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741376.html 1.概念 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试 ...
最新文章
- 云原生的浪潮下,为什么运维人员适合学习Go语言?
- Android系统中设置TextView等的行间距
- Django的路由分发与名称空间
- 第六章 PX4-Sensors解析
- win10,配置环境变量时系统环境变量和用户环境变量的优先级
- 数据库应用系统——引言
- 智能交通助力城市道路行车提速15%
- 【论文】本周论文推荐(迁移学习、阅读理解、对话系统、图神经网络、对抗生成网络等)...
- java query dsl_java – QueryDsl – 具有字符串值的case表达式
- Atitit.软件gui按钮and面板---os区-----linux windows搜索文件 文件夹
- 移动互联应用技术和计算机网络技术,移动互联应用技术团队介绍
- python 前端开发_python和前端开发怎么抉择?
- Wireshark 使用教程
- 监控工具Zabbix之原理及部署
- js calendar / wannianli
- VueCLI和Vite
- 北京中医药大学22春《生物化学B》平时作业1【专职辅导答案】
- 算法设计与分析: 2-7 士兵站队问题
- Redis监控汇总一
- STM32入门开发--LED模块实现跑马灯
热门文章
- 横向对比EXT4,带你感受真实的Linux文件系统F2FS
- BPM那些事儿——BPM与SOA的演进与展望
- 阻滞增长模型求解_马尔萨斯与阻滞增长模型对于人口预测的分析
- vue axios ts 封装流文件下载方法
- html 360浏览器表单自动填写,360 浏览器自动填表: 让重复填表见鬼去
- 图论及其应用(基础知识)(1)(数学建模基础速成)
- Jensen不等式简介
- stm32单片机端口映射_STM32F103C8T6 can端口映射
- WinRAR美化增强版 v5.10 简体中文版
- python 大智慧股池_大智慧竞价股池