用c++寫乙個函式, 如 foo(const char *str), 列印出 str 的全排列,
如 abc 的全排列: abc, acb, bca, dac, cab, cba
為方便起見,用123來示例下。123的全排列有123、132、213、231、312、321這六種。
首先考慮213和321這二個數是如何得出的。顯然這二個都是123中的1與後面兩數交換得到的。
然後可以將123的第二個數和每三個數交換得到132。同理可以根據213和321來得231和312。因此可以知道——全排列就是從第乙個數字起每個數分別與它後面的數字交換。找到這個規律後,遞迴的**就很容易寫出來了:
// allrange.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
//全排列的遞迴實現
#include #include #include void swap(char *a, char *b)
//k表示當前選取到第幾個數,m表示共有多少數.
void allrange(char *pszstr, int k, int m)
else }
}void foo(char *pszstr)
int main()
百度筆試題
一 選擇題 15分 共10題 1.在排序方法中,關鍵碼比較次數與記錄地初始排列無關的是 a.shell排序 b.歸併排序 c.直接插入排序 d.選擇排序 2.以下多執行緒對int型變數x的操作,哪幾個需要進行同步 a.x y b.x c.x d.x 1 3.void func 中,變數val的記憶體...
百度筆試題
一 選擇題 15分 共10題 1.已知乙個線性表 38,25,74,63,52,48 採用的雜湊函式為hash key key mod 7,將元素雜湊到表長為7的雜湊表中儲存。請選擇後面兩種衝突解決方法分別應用在該雜湊表上進行等概率成功查詢的平均查詢長度,拉鍊法 線性探測法 a.1.0 b.1.5 ...
百度筆試題
1 完成函式 size t foo unsigned int a1,size t al1,unsigned int a2,size t al2 其中a1和a2都為無符號陣列,al1和al2為陣列的長度,陣列的長度為偶數。無符號陣列由一對數字區間組成。如下例 a1 為 0,1,3,6,10,20 a2...