1、
全排列
#define N 3
char arr[] = "abc";
int printarr()
{
for(int i = 0; i
{
cout<
}
cout<
}
int permutation(char *a, int n)
{
if(n == 1)
{
printarr();
return 0;
}
for(int i = 0; i
{
char c = a[0]; a[0]=a[i]; a[i]=c;
permutation(a+1, n-1);
c = a[0]; a[0]=a[i]; a[i]=c; //恢复之前状态
}
}
2、
组合
从N个中取M个的组合
#define N 3
#define M 2
char arr[N] = "abc";
char arrm[M];
int printarr()
{
for(int i = 0; i)
{
cout<];
}
cout<
}
int combination(char *a, int n, int m)
{
if(m == 0)
{
printarr();
return 0;
}
for(int i = n-1; i>=m-1; i--) //从后面开始,否则arrm[m-1]的下标每次减一不好实现
{
arrm[m-1]=a[i];
combination(a, i, m-1);
}
}
阅读(1625) | 评论(0) | 转发(0) |