1. 程式人生 > >有重複元素的排列問題//利用全排列函式

有重複元素的排列問題//利用全排列函式

  • 題目描述
    設R={r1,r2,……,rn}是要進行排列的n個元素。其中元素r1,r2,……,rn可能相同。使設計一個演算法,列出R的所有不同排列。
    給定n以及待排列的n個元素。計算出這n個元素的所有不同排列。

  • 輸入輸出格式
    輸入格式:
    第1行:元素個數n(1<=n<500)
    第2行:一行字串,待排列的n個元素
    輸出格式:
    計算出的n個元素的所有不同排列,最後一行是排列總數。

  • 輸入輸出樣例
    輸入樣例#1:
    4
    aacc
    輸出樣例#1:
    aacc
    acac
    acca
    caac
    caca
    ccaa
    6

  • 說明
    輸出按字典順序排

程式碼如下

#include<cstdio>
#include<algorithm> 
using namespace std;
char a[505];
int n,sum=0;
int main()
{
	scanf("%d",&n);
	scanf("%s",a);
	sort(a,a+n);//排序,使字典序最小 
	do
	{
		puts(a);
		sum++;//統計個數 
	}while(next_permutation(a,a+n));//利用函式 
	printf("%d",sum);
	return 0;
}