您的位置:首页 > 其它

求集合的幂集

2017-06-29 21:09 127 查看
这是朋友叫我帮他写的,足足干了两天,终于在养好精神后把它做出来了,虽然是递归实现的,但总算是弄出来了,两天时间里搞了好多遍循环来实现,但是写着写着就迷糊了,洗了个头,刷了把脸,人精神了,换了递归刺溜一下就写出来了,手动开心 哈哈哈哈。

但是据说还可以用分治法、回溯法、穷举法来实现哦

#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}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: