【問題描述】
設r=是要進行排列的n個元素。其中元素r1, r2 , …, rn可能相同。試設計乙個演算法,列出r的所有不同排列。
【程式設計任務】
給定n 以及待排列的n 個元素。計算出這n 個元素的所有不同排列。
【輸入格式】
檔案的第1 行是元素個數n,1≤n≤500。接下來的1 行是待排列的n個元素。
【輸出格式】
計算出的n個元素的所有不同排列輸出。檔案最後1行中的數是排列總數。
【輸入樣例】
4 aacc
【輸出樣例】多解
aacc
acac
acca
caac
caca
ccaa
6 【解題思路】
如果是不重複的序列,直接按照最簡單的排列方式,採用遞迴的方式將第乙個元素與最後乙個元素交換,但題中會有重複的排列,所以可以增加乙個判斷的條件,判斷是否有重複的,就是這麼簡單。。
【**】
#include//萬能標頭檔案
using namespace std;
long
long ans;
int n;
char
str [1001];
/*檢查是否重複,重複返回false,不重複返回true
*/bool ok (char
str,int a,int b) }/*
傳說中的核心**
*/void perm (char
str,int k,int m)
cout }
else
}}}/*
主函式 沒毛病
*/int main()
getchar();
perm(str,0,n-1);
cout0;}
有重複元素的排列問題
源 include include include using namespace std long long ans int ok char str,int a int b fscanf ft,d n fscanf ft,s str i ans 0 perm fp,str,0,n 1 fprint...
有重複元素的排列問題
題目描述 設r 是要進行排列的n個元素。其中元素r1,r2 rn可能相同。試設計乙個演算法,列出r的所有不同排列。給定n 以及待排列的n 個元素。計算出這n 個元素的所有不同排列。輸入輸入資料的第1 行是元素個數n,1 n 500。接下來的1 行是待排列的n個元素。輸出計算出的n個元素的所有不同排列...
有重複元素的排列問題
設集合r 是要進行排列的n個元素,其中r1,r2,rn可能相同。試著設計乙個演算法,列出r的所有不同排列。即,給定n以及待排的n個可能重複的元素。計算輸出n個元素的所有不同排第1行是元素個數n,1 n 15。接下來的1行是待排列的n個元素,元素中間不要加空格。程式執行結束時,將計算輸出n個元素的所有...