gc_8_11.c

来自「gc:高级程序员考试用书的c程序源文件」· C语言 代码 · 共 33 行

C
33
字号
# include <stdio.h>
# include <string.h>
# define N 20
char w[N];
void perm(int n,char *s)
{
	char s1[N];
	int i;
	if(n < 1) printf("%s\n",w);            /*一个排列生成输出*/
	else {                                 /*设定本层次字符,并递归调用生成更深层次字符*/
		strcpy(s1,s);                      /*保存本层次可用的字符*/
		for(i = 0; *(s1 + i); i++)  {      /*依次选本层次可用字符*/
			*(w+n-1) = *(s1+i);             /*选用字符填入正生成的字符排列中*/
			*(s1+i) = *s1;
			*s1 = *(w+n-1);
			perm(n-1,s1+1);              /*递归*/
		}
	}
}

void main()
{
	char s[20];
	int n;
	printf("输入要排列的字符串\n");
	scanf("%s",&s);
	printf("你想生成有几个字符组成的字符排列\n");
	scanf("%d",&n);
	perm(n,s);
	//perm(3,"abcdefghi");
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?