做音乐网站,建设银行网上银行官方网站,网站需要流量,谷歌seo优化公司题目 给定一个由不同的小写字母组成的字符串#xff0c;输出这个字符串的全排列数量。 我们假设对于小写字母有a b ... y z。 输入
每组输入只有一行#xff0c;是一个由小写字母组成的字符串#xff08;不含相同字母#xff09;#xff0c;已知字符… 题目 给定一个由不同的小写字母组成的字符串输出这个字符串的全排列数量。 我们假设对于小写字母有a b ... y z。 输入
每组输入只有一行是一个由小写字母组成的字符串不含相同字母已知字符串的长度在1到6之间。注意有多组输入
输出
输出这个字符串的所有排列方式每行一个排列。要求字母序比较小的排列在前面。字母序如下定义 已知S s1s2...sk T t1t2...tk则S T 等价于存在p (1 p k)使得 s1 t1 s2 t2 ... sp - 1 tp - 1 sp tp成立。
注意每组样例输出结束后接一个空行。
分析
通过使用递归将大问题变成小问题从一个字母进行排列到两个字母进行排列....一直到n个字母进行排列。
代码
//全排列
#include stdio.h
#include string.h
int func(char a[], int k) {int i, temp;static int count 0;if (k strlen(a)) {count;/*printf(%s\n, a);*/}for (i k; i strlen(a); i) {temp a[k];a[k] a[i];a[i] temp;func(a, k 1);temp a[k];a[k] a[i];a[i] temp;}return count;
}
int main()
{char a[26];int i 0;while (scanf(%s, a)!EOF){i func(a, 0);printf(%d\n, func(a, 0)-i);}return 0;
}
这里的减i是因为该题目的要求是多组输入所以i是减去上一组的个数。