全排列和组合

组合:

#include "stdafx.h"
#include<iostream>
using namespace std;
void print(int n,int *A,int cur,int *B)
{
	if(cur==n)
	{
		for(int i=0;i<cur;i++)
		{
			if(B[i])
			{
				printf("%d",A[i]);
			}
		}
		printf("\n");
		return;
	}
	B[cur]=1;
	print(n,A,cur+1,B);
	B[cur]=0;
	print(n,A,cur+1,B);
}
int main()
{
	int n,A[10],B[10];
	while(cin>>n)
	{
		memset(B,0,10);
		for(int i=0;i<n;i++)
			cin>>A[i];
		print(n,A,0,B);
	}
	return 0;
}

 全排列:

#include<iostream>
using namespace std;
void print(int n,int *A,int cur)
{
	if(cur==n)
	{
		for(int i=0;i<cur;i++)
		{
				printf("%d",A[i]);
		}
		printf("\n");
		return;
	}
	else
	{
		for(int i=cur;i<n;i++)
		{
			swap(A[i],A[cur]);
			print(n,A,cur+1);
			swap(A[i],A[cur]);
		}
	}
}
int main()
{
	int n,A[10],B[10];
	while(cin>>n)
	{
		memset(B,0,10);
		for(int i=0;i<n;i++)
			cin>>A[i];
		print(n,A,0);
	}
	return 0;
}

 

posted @ 2013-03-07 14:23  代码改变未来  阅读(155)  评论(0编辑  收藏  举报