收集的一些題or結論2

2021-06-18 04:45:12 字數 2171 閱讀 9557

#include using namespace std;

/* 已知字串裡的字元是互不相同的,按照字典序輸出所有的組合,比如ab輸出aa,ab,ba,bb。

思路:1 要字典序,所以要首先對陣列排序(氣泡排序的第一層迴圈只是用來控制做多少次的,和第二層迴圈基本沒聯絡)

2 乙個完整的輸出 = 填入乙個字元 + 填入剩下的字元,邊界條件是所有字元都已經填入則輸出

*/void print(char*,char*,int,int);

void bubblesort(char*);

int main()

void bubblesort(char* a)

} }/*

a 原始陣列

result 結果陣列

loc 當前字元填充位置

n result的長度

*/void print(char* a,char* result,int loc,int n)

也是不匹配的

演算法用棧實現:

遇到左括號則入棧,遇到右括號則出棧,是否與左括號匹配。

如果不匹配或者棧已經為空沒有元素或者最後棧的元素不為空,則不合法

*//*

stl中stack的用法:

stacks;

s.push(x) 無返回值,將元素x壓棧

s.pop(); 退棧,無返回值

s.top(); 取棧頂元素,返回棧頂元素

s.empty(); 判斷棧是否為空,如果是空,返回1,否則返回0

s.size(); 返回棧中元素的個數

*/ void isvalid(char*);

int main()

)"; char *b = "((({})";

char *c = ")";

char *d = "()(){}";

isvalid(a);

isvalid(b);

isvalid(c);

isvalid(d);

cin.get();

}void isvalid(char* a)

': if(!s.empty())

else

}if(temp)

'))flag = true;

else

}

}if(!s.empty())

flag = false;

cout《避免死鎖 -- 銀行家演算法

某個公司舉行一場羽毛球賽,有1001個人參加,現在為了評比出「最厲害的那個人」,進行淘汰賽,請問至少需要進行多少次比賽。

換個角度看,要淘汰一人必須打一場比賽,因此要淘汰1000人就要1000場比賽

有100個燈泡,第一輪把所有燈泡都開啟,第二輪把奇數字的燈泡滅掉,第三輪每隔兩個燈泡,滅乙個,開乙個,依此類推。求100輪後還亮的燈泡。

從1開始到100看自己包含多少個約數(包括1和自己),如果有奇數個約數那麼燈泡是亮的,偶數個約數那麼燈泡是暗的,而n=p*q,只有在p=q的時候約數的個數是奇數,也就是說,該數字就完全平方數

有20個陣列,每個陣列裡面有500個陣列,降序排列,每個數字是32位的unit,求出這10000個數字中最大的500個。

常用的量:10^6或者100w就是1m。10^9就是1億,也就是1g

因此這麼多數字1m都沒有,直接輸入記憶體,5路歸併;或者看成乙個大陣列,top500,快速選擇演算法。

關於記憶體的延遲分配

linux核心定義了「零頁面」(內容全為0的乙個物理頁,且實體地址固定),應用層的記憶體分配請求,如棧擴充套件、堆分配、靜態分配等,分配線性位址後,就將頁表項條目指向「零頁面」(指定初始值的情況除外),這樣「零頁面」就被所有程序共享,當向頁面執行寫入操作時,核心就會新分配乙個物理頁,實行「寫時拷貝」操作,這樣就實現了物理頁面的延遲分配(如果只有讀沒有寫,則無需另分配物理頁)。

給定一陣列,輸出滿足2a=b(a,b代表陣列中的數)的數對,要求時間複雜度盡量低

sb了,還想遍歷分別比較的。。找相等的東西就是hash直接索引得到。。。第乙個陣列hash,o(n)...乘以2再hash一遍把存在的元素就取出來,最終o(n)的複雜度

這個還可以排序,然後對於2a二分查詢。空間為o(1),但時間變成了排序o(nlgn)+所有元素二分查詢o(nlgn)

收集的一些題or結論

兩條單鏈表如果交叉的話不可能一條有環一條沒有環。已知有個rand7 的函式,返回1到7隨機自然數,讓利用這個rand7 構造rand10 隨機1 10 rand7 1 7得到乙個離散整數集合a 其中每個整數的出現概率也都是1 7。而rand7 得到的集合b 中每個整數出現的概率也是1 7。顯然集合a...

一些刷題過程中的結論

uva 10313 整數i拆分成不超過j個整數的拆分方案數,是和整數i拆成若干個值不超過j的整數的拆分方案數是相同的 原理 ferrers影象 詳 關於c 引用帶的的不易發現的錯誤。來自於乙個4維dp。uva 10913 例如int res dp i j p q 如果在這個記憶化搜尋子過程中需要更新...

博弈論的一些結論

感謝 自從昨天考了博弈論的一道程式填空題,博弈論的陰雲便一直在我的心上徘徊,今天把這個坑填一下。一.巴什博弈 bash game a和b一塊報數,每人每次最少報乙個,最多報四個,看誰先報到三十.這應該是最古老的關於巴什博弈的遊戲了吧。其實如果知道原理,這遊戲一點運氣成分都沒有,只和先後手有關,比如第...