全排列
void permutation(char *str,char *Begin)
{
if((*Begin)=='\0') cout<<str<<endl;
else
{
for(char *tmp = Begin;(*tmp)!='\0';tmp++)
{
char t = *Begin;
*Begin = *tmp;
*tmp = t;
permutation(str,Begin+1);
t = *Begin;
*Begin = *tmp;
*tmp = t;
}
}
}
组合
#include <iostream>
#include <cstring>
#include<vector>
#include<queue>
using namespace std;
void permutation(char *str,int Begin,int need,int n,int length,int pos,int start)
{
if(need==0)
{
for(int i=start;i<n+start;i++)
cout<<str[i];
cout<<endl;
}
else
{
for(int i=pos;need<=length-i;i++)
{
char t = str[i];
str[i] = str[Begin];
str[Begin] = t;
permutation(str,Begin+1,need-1,n,length,i+1,start);
t = str[i];
str[i] = str[Begin];
str[Begin] = t;
}
}
}
void group(char a[],int length)
{
for(int i=1;i<=length;i++)
{
for(int j=0;j<=length-i;j++)
{
permutation(a,j+1,i-1,i,length,j+1,j);
}
}
}
int main()
{
int n;
cin>>n;
char a[20];
cin>>a;
group(a,n);
//permutation(a,2,2,3,5,2,1);
return 0;
}