#include <stdio.h>
#include<stdlib.h>
/*
进行全排列,如输入m=2 n=2
输出
11
12
21
22
*/
void permutation(int *buf, int n, int size, int m);
int main()
{
/*
当n或者m比较大时,可能会产生段错误,这时,加上编译参数
gcc -Wl, -stacksize, -x100000000 permutation.c -o permutation
*/
int n = 2;//一共有多少个数
int m = 2; //每个数取的可能
int * buffer = (int*)malloc(n*sizeof(int));
for( int i=0; i<n; i++ )
buffer[i] = 0;
permutation(buffer,0, n, m);
//第一个参数始终是0,表示从第0个数开始处理
return 0;
}
// m 表示排列的可能
//形参n表示当前字符为第n个数,size表示字符的个数
void permutation(int * buf, int n, int size, int m )
{
int i = 0;
if (n == size)
{
for( i=0; i<n; i++ )
printf("%d",buf[i]);
printf("\n");
return;
}
for (i = 0; i < m; i++)
{
buf[n] = 1 + i;
permutation(buf, n+1, size , m);
}
return;
}
实现字典全排列
最新推荐文章于 2020-04-03 14:15:49 发布