#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一塊報數,每人每次最少報乙個,最多報四個,看誰先報到三十.這應該是最古老的關於巴什博弈的遊戲了吧。其實如果知道原理,這遊戲一點運氣成分都沒有,只和先後手有關,比如第...