求集合的幂集
2017-06-29 21:09
127 查看
这是朋友叫我帮他写的,足足干了两天,终于在养好精神后把它做出来了,虽然是递归实现的,但总算是弄出来了,两天时间里搞了好多遍循环来实现,但是写着写着就迷糊了,洗了个头,刷了把脸,人精神了,换了递归刺溜一下就写出来了,手动开心 哈哈哈哈。
但是据说还可以用分治法、回溯法、穷举法来实现哦
输出结果
{1}{1,2}{1,2,3}{1,2,3,4}{1,2,4}{1,3}{1,3,4}{1,4}{2}{2,3}{2,3,4}{2,4}{3}{3,4}{4}
但是据说还可以用分治法、回溯法、穷举法来实现哦
#include<stdio.h> #include<iostream> using namespace std; void func(int index, int arr[], int len1, int buffer[],int len2) { for (int i = index; i < len1; i++) {//让每个数都能和上一次的记录进行配合,注意起始位置,起始位置是从上一次记录末尾的后一位开始的。 printf("{"); for (int j = 0; j < len2; j++) {//先输出上一次的记录 printf("%d,", buffer[j]); } printf("%d}", arr[i]);//输出新增加的数 buffer[len2] = arr[i];//把新增加的数加到记录里方便下次输出 if (i + 1 < len1 ) func(i + 1, arr, len1, buffer,len2+1);//函数递归,传递记录,让这次的记录和下次的新增加的数一起输出。 } } int main() { const int len1 = 4;//原始数组大小 int arr[len1] = { 1,2,3,4 };//原始数组 int buffer[len1]; //用来记录上一次的输出记录例如{1,2,3} 他的上一次记录为{1,2} int len2 = 0;//用来记录buffer的大小 int index = 0; func(index, arr, len1, buffer,len2); return 0; }
输出结果
{1}{1,2}{1,2,3}{1,2,3,4}{1,2,4}{1,3}{1,3,4}{1,4}{2}{2,3}{2,3,4}{2,4}{3}{3,4}{4}
相关文章推荐
- 求集合的幂集
- 巧用二叉树原理求解集合的幂集
- C语言获取集合幂集
- 集合的幂集(C++)
- javascript实现数据结构: 树和二叉树的应用--最优二叉树(赫夫曼树),回溯法与树的遍历--求集合幂集及八皇后问题
- 回溯法学习---求集合的幂集
- 求集合的幂集【转】
- 二进制方法 解 集合的幂集
- C语言 回溯的应用 ---- 输出集合{1,2,...n}的幂集
- 解 :求有n个 元素的集合的幂集
- C++ 递归艺术----求任意集合的幂集组合和子集合的总个数
- 回溯法之求n个集合的幂集
- 求集合的幂集
- 求集合的幂集
- 利用二叉树先序遍历求含n个元素的集合的幂集(used stack and vector)
- 回溯法(深度优先搜索)求集合的幂集
- 非递归求集合的幂集
- 求给定集合的幂集
- 计算给定集合的幂集(如输入"ABCDE")/计算二项式系数C(M,N)
- 回溯法(深度优先搜索)求集合的幂集