題目描述
有
n個字母,列出由該字母組成的字串的全排列(相同的排列只計一次)。
輸入
第一行輸入是字母個數n,
1<=n<=20
。接下來一行輸入的是待排列的
n個字母。
輸出
計算出的
n 個字母的所有不同排列總數
樣例輸入
4
aacc
樣例輸出
6
/*看到這個題首先想到對n個字元全排列,這當然會用到階乘,將階乘所得值賦值給ans,定義乙個變數b,賦初值為1,從1-n判斷前後兩個字元是否相等,若相等,b加1,直到迴圈結束,輸出結果為ans/b的值!*/
#include #include #include int cmp(const void *a,const void *b)
int main()
{ int n;
char s[21];
while(scanf("%d %s",&n,s)!=eof)
{qsort(s,n,sizeof(s[0]),cmp);
long ans=1,b=1;
int i;
for(i=1;i<=n;i++)
ans*=i;
for(i=1;i
字元排列問題
有n個字母,列出由該字母組成的字串的全排列 相同的排列只計一次 第一行輸入是字母個數n,1 n 20。接下來一行輸入的是待排列的n個字母。計算出的n 個字母的所有不同排列總數 4 aacc include include using namespace std int test int s int ...
字串全排列問題
全排列問題 給定字串 abc,全排列為 abc,acb,bac,bca,cab,cba 遞迴實現 1 標記訪問狀態陣列 val,當前所儲存的字串物件 tmp,儲存結果陣列 res 2 思路 2.1 每次從 0 到 str.length 1,選擇未被訪問的字元加入到 tmp 中,標記當前字元為已訪問 ...
字串全排列問題
問題描述輸入乙個字串,列印出該字串中字元的所有排列 演算法思路通過遞迴的方法來實現。從字串中選出乙個字元作為排列的第乙個字元,然後對剩餘的字元進行全排列。如此遞迴處理。實現def premutation str length len str if length 1 return str array ...