有重複元素的排列問題

2021-09-28 20:07:46 字數 1028 閱讀 3356

時間限制:1000ms  記憶體限制:1000k

提交次數:1610 通過次數:656

題型: 程式設計題   語言: g++;gcc;vc

設集合r=是要進行排列的n個元素,其中r1,r2,...,rn可能相同。

試著設計乙個演算法,列出r的所有不同排列。

即,給定n以及待排的n個可能重複的元素。計算輸出n個元素的所有不同排列。

第1行是元素個數n,1<=n<=15。接下來的1行是待排列的n個元素,元素中間不要加空格。

程式執行結束時,將計算輸出n個元素的所有不同排列。最後1行中的數是排列總數。

(說明:

此題,所有計算出的排列原本是無所謂順序的。但為了容易評判,輸出結果必須唯一!

現做約定:所有排列的輸出順序如課本例2-4的程式段的輸出順序,區別僅是這道題是含

重複元素。)

4

aacc

aacc

acac

acca

caac

caca

ccaa

6

課本上有「遞迴」實現無重複元素全排列的源程式。

稍加修改即可滿足此題要求。

在遞迴產生全排列的那段程式開始之前,

加乙個判斷:判斷第i個元素是否在list[k,i-1]**現過。

permexcludesame(char list, int k, int m)

}

#include #include #include using namespace std;

int count1=0;

void swap1(char a,char b)

bool findsame(char a,int k,int i)

}if(f==0)

return false;

}void perm(char a,int k,int m)

有重複元素的排列問題

源 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個元素。輸出格式 計算出的...

有重複元素的排列問題

題目描述 設r 是要進行排列的n個元素。其中元素r1,r2 rn可能相同。試設計乙個演算法,列出r的所有不同排列。給定n 以及待排列的n 個元素。計算出這n 個元素的所有不同排列。輸入輸入資料的第1 行是元素個數n,1 n 500。接下來的1 行是待排列的n個元素。輸出計算出的n個元素的所有不同排列...