题目描述
设R={r1,r2,……,rn}是要进行排列的n个元素。其中元素r1,r2,……,rn可能相同。使设计一个算法,列出R的所有不同排列。
给定n以及待排列的n个元素。计算出这n个元素的所有不同排列。
输入输出格式
输入格式:
第1行:元素个数n(1<=n<500)
第2行:一行字符串,待排列的n个元素
输出格式:
计算出的n个元素的所有不同排列,最后一行是排列总数。
输入输出样例
说明
输出按字典顺序排
思路:STL
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; char a[502],b[502]; int n,s=1; int main(){ scanf("%d",&n); scanf("%s",a); sort(a,a+n); strcpy(b,a); printf("%s ",a); while(next_permutation(a,a+n)){ if(!strcmp(b,a)) continue; printf("%s ",a); ++s; } printf("%d",s); return 0; }