遞迴 九度1120 全排列

2021-08-20 19:20:43 字數 1350 閱讀 7818

/*題目描述:

給定乙個由不同的小寫字母組成的字串,輸出這個字串的所有全排列。

我們假設對於小寫字母有'a' < 'b' < ... < 'y' < 'z',而且給定的字串中的字母已經按照從小到大的順序排列。

輸入:輸入只有一行,是乙個由不同的小寫字母組成的字串,已知字串的長度在1到6之間。

輸出:輸出這個字串的所有排列方式,每行乙個排列。要求字母序比較小的排列在前面。字母序如下定義:

已知s = s1s2...sk , t = t1t2...tk,則s < t 等價於,存在p (1 <= p <= k),使得

s1 = t1, s2 = t2, ..., sp - 1 = tp - 1, sp < tp成立。

樣例輸入:

abc樣例輸出:

abcacb

bacbca

cabcba

每組樣例輸出結束後要再輸出乙個回車。*/

#include#include#include#include#define maxsize 10

using namespace std;

/*全排列問題:使用hash陣列,下標表示數字,內容為true/false表示是否已探測過

遞迴演算法:假設0到(index-1)已經滿足,討論與index位的情況

遞迴基:index = n 時,說明前n位均已滿足

*/bool hasha[maxsize] = ;

char origin[maxsize];

char result[maxsize] = ; //若不設定全域性變數,就要用引數傳遞

void f(int len, int index)

else }}

}int main()

int len = strlen(origin);

f(len, 0);

cout << endl; //一組資料輸出完,額外有乙個空行

}

return 0;

}

符合個人習慣的**

#include #include#include#includeusing namespace std;

bool hash[10]=;

char str[10];

char ret[10];

void dfs(int len,int index)

else

} }

}int main()

int len=strlen(str);

dfs(len,0);

printf("\n");

} return 0;

}

九度 1120 全排列

題目描述 給定乙個由不同的小寫字母組成的字串,輸出這個字串的所有全排列。我們假設對於小寫字母有 a b y z 而且給定的字串中的字母已經按照從小到大的順序排列。輸入 輸入只有一行,是乙個由不同的小寫字母組成的字串,已知字串的長度在1到6之間。輸出 輸出這個字串的所有排列方式,每行乙個排列。要求字母...

九度題目1120

題目描述 給定乙個由不同的小寫字母組成的字串,輸出這個字串的所有全排列。我們假設對於小寫字母有 a b y z 而且給定的字串中的字母已經按照從小到大的順序排列。輸入 輸入只有一行,是乙個由不同的小寫字母組成的字串,已知字串的長度在1到6之間。輸出 輸出這個字串的所有排列方式,每行乙個排列。要求字母...

46 全排列 全排列 遞迴

遞迴的時候每次確定乙個位置的數字 nums陣列在遞迴過程中分為左右兩部分,左邊部分是已經確定好的部分,而右邊是待確定數字的部分。每次都嘗試用當前位置右邊的數字來交換當前數字以確定當前數字。題目可以使用collections來優化。詳見 class solution 遞迴過程中每次確定乙個位置的數,遞...