组合:
#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;
}