浙江财经大学
信息管理与工程学院

幂集问题

本文由 Ocrosoft 于 2016-12-23 20:30:53 发表

给定一个集合,求其所有的子集(不包含空集)

#include <set>
#include <map>
#include <list>
#include <cmath>
#include <stack>
#include <queue>
#include <ctime>
#include <string>
#include <cstdio>
#include <vector>
#include <cctype>
#include <climits>
#include <sstream>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <functional>
#define strend string::npos
#define ms(a) memset(a,0,sizeof(a))
#define rep(a,v,b) for(int a=v;a<b;a++)
#define repe(a,v,b) for(int a=v;a<=b;a++)
#define pre(a,v,b) for(int a=v;a>b;a--)
#define pree(a,v,b) for(int a=v;a>=b;a--)
#define lowbit(x) x&-x
typedef long long LL;
const LL LINF = LLONG_MAX / 2;
const int INF = INT_MAX / 2;
const int MAXN = 27 + 10;
const int MOD = 1000000007;
int gcd(int a, int b)
{
	if (!b)return a;
	return gcd(b, a%b);
}
/*(◕‿‿◕)(◕‿‿◕) (◕‿‿◕) (◕‿‿◕) (◕‿‿◕) (◕‿‿◕)*/
/*(◕‿‿◕) 签订契约,成为马猴烧酒吧 (◕‿‿◕)*/
/*(◕‿‿◕)(◕‿‿◕) (◕‿‿◕) (◕‿‿◕) (◕‿‿◕) (◕‿‿◕)*/
using namespace std;
int n;//个数
vector<int> v;//保存
bool output[100];//记录某个位置数字是否输出
void dfs(int p)
{
	if (p >= n)
	{
		rep(i, 0, n)if (output[i])printf("%d ", v[i]);
		printf("\n");
		return;
	}
	output[p] = true;
	dfs(p + 1);
	output[p] = false;
	dfs(p + 1);
	return;
}
int main()
{
	cin >> n;
	ms(output);
	rep(i, 0, n)
	{
		int t; cin >> t;
		v.push_back(t);
	}
	dfs(0);
	return 0;
}
/*3 1 2 3*/

欢迎分享与转载,请保留链接与出处。Ocrosoft » 幂集问题

点赞 (0)or拍砖 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址