Time of Update: 2018-12-04
1.做事一定要高調.讓大家知道你在為部門經理這職位在努力.(推薦讓老總知道就可以了).我打個比方,假如你們部門經理辭職,你們老總會選誰?如果你們老總知道你想做部門經理,你一直在努力,那麼可能部門經理就是你了.如果你現在悶聲不坑,那麼即使你們部門經理走了,也輪不到你.老總選擇中層領導的目的很簡單:能做事,你告訴老總你在為做部門經理,甚至副總努力,那麼潛意識老總會注意到你了.毛遂自薦很有用.不要聽別人說什麼不要表露出來,你不表露出來,誰會知道你?老總會討厭有上進心的嗎?老總喜歡的是PK制度,能者上。
Time of Update: 2018-12-04
問題:請給出一個時間為O(nlgk),用來將k個已排序鏈表合并為一個排序鏈表的演算法。此處的n為所有輸入鏈表中元素的總數。(提示:用一個最小堆來做k路合并)編程思路:假設k個鏈表都是非降序排列的。(1)取k個元素建立最小堆,這k個元素分別是k個鏈表的第一個元素。建堆的時間複雜度O(k)。(2)堆頂元素就是k個鏈表中最小的那個元素,取出它。時間複雜度O(1)。(3)若堆頂元素所在鏈表不為空白,則取下一個元素放到堆頂位置,這可能破壞了最小堆性質,所以進行堆調整。堆調整時間複雜度O(lgk)。若為空白
Time of Update: 2018-12-04
使用這個演算法尋找第i小元素的最壞情況已耗用時間為O(n)。關於已耗用時間的證明簡直屌爆了!唉,看了這麼多證明,我發現其實最難的就是提出數學模型、數學描述,邁出這一步,剩下的就是湊了。這個演算法比9.2節中那個“期望已耗用時間才是O(n)”的RandomizedPartition演算法更加牛逼,它最壞已耗用時間就是O(n)。之所以這麼屌,是因為它每次劃分都能保證是最佳劃分,即“中分”。要想實現中分,就得先把中位元找出來。演算法find()過程如下:(1)先把原數組a劃分成五個一組,五個一組、、、
Time of Update: 2018-12-04
二叉尋找樹的尋找(尋找某個值、尋找最小元素、尋找最大元素)、插入、刪除操作的最壞時間都為O(h)。構造二叉尋找樹時採取隨機演算法,可以讓二叉尋找樹的期望高度為O(lgn),則前面那些操作的最壞時間就可以為O(lgn)。非常高效的演算法。代碼如下:#include <iostream>using namespace std;struct TreeNode{int key;TreeNode *p;TreeNode *left;TreeNode
Time of Update: 2018-12-04
通常情況下,推薦使用WebSphere提供的卸載程式來卸載WebSphere,而不要使用作業系統的卸載軟體的功能來卸載WebSphere,因為那樣步驟比較複雜,並且有可能由於漏掉某些步驟而導致不能完全卸載乾淨。卸載WebSphere之前,需要停止所有WebSphere相關的進程,最好查看系統中的進程確保沒有java進程運行,另外,如果使用了Web伺服器,確保停止了Web伺服器。然後運行WebSphere的卸載程式,卸載程式命令在UNIX系統中為uninstall,Windows中為uninsta
Time of Update: 2018-12-04
剛才在百度知道看到了這個問題,回答了下,這個問題很好,總結一下。聲明一個二維數組int matrix[100][100];當把二維數組作為參數傳遞的時候很多人可能一上來就這樣寫intfun(int
Time of Update: 2018-12-04
http://acm.hdu.edu.cn/showproblem.php?pid=1251 #include <iostream>using namespace std;struct TrieNode{ TrieNode *children[26]; bool flag; int cnt;//首碼數目};void InitTrieNode(TrieNode *tn){ if(!tn) { exit(1); } for(int
Time of Update: 2018-12-04
1、QMutexQMutex mutex;void func(){mutex.lock();........mutex.unlock();}2、QMutex聯手QMutexLocker在複雜函數或者異常處理中,對mutex進行lock()和unlock()操作將會很複雜,進入點要lock(),在所有跳出點都要unlock(),想想都蛋疼!忘記unlock()將是很苦逼的事情,所以Qt引進了QMutexLocker來避免lock()和unlock()操作。QMutex mutex;void
Time of Update: 2018-12-04
具體演算法實現細節請查看IEEE論文:Set-oriented mining for association rules in relational databasesSETM演算法代碼+測試案例+具體操作步驟下載戳這http://download.csdn.net/detail/michealtx/4266085sql語言實現,找出來所有的頻繁模式。代碼如下:---------------最終版--------------drop table c1,c2,c3,c4,r1,r2,r3,r4--
Time of Update: 2018-12-04
這個問題類似於兩個序列的最長公用子序列問題,但是這裡只有一個序列啊?腫麼辦?想想這個n個數的序列,要想找它最長遞增子序列,這個子序列肯定是從小到大排序的,從小到大排序的耶!跟誰對應呢?思路來了!先把原序列從小到大排序,然後跟原序列對比尋找最長公用子序列!排序時間為O(nlgn),兩個長度為n的序列尋找最長子序列為O(n^2),所以總的時間複雜度為O(n^2)。代碼:#include <iostream>using namespace std;int
Time of Update: 2018-12-04
初學Qt,用了Qt內建的事件,然後想怎麼才能定義自己的事件呢?又如何使用自訂事件呢?看了篇文章,說先要子類化QEvent,然後定義自己的QEvent::Type,然後重寫QWidget::event()函數,然後就可以調用QCoreApplication::sendEvent()或者QCoreApplication:;postEvent()發送事件就好了。但我比較笨,還是雲山霧罩,不知道怎麼下手。怎麼子類化QEvent?在哪裡定義自己的QEvent::Type?在哪裡重寫QWidget::eve
Time of Update: 2018-12-04
演算法細節見論文:Fast Algorithm for Mining Association Rules 圖形化版本工程+測試案例下載戳這http://download.csdn.net/detail/michealtx/4266155控制台版本C++代碼如下:#include <iostream>#include <sstream>#include <fstream>#include <vector>#include
Time of Update: 2018-12-04
本書從文字翻譯的案例切入,假設把英文翻譯為法文,每個英文單詞為關鍵字,其對應法文為衛星資料。用二叉尋找樹儲存,該怎麼設計這個尋找樹。即使是紅/黑樹狀結構,尋找的時間複雜度也為O(lgn)即樹的深度。但是因為文章中某個單詞出現的頻率不同,所以可能有些頻率很高的單詞比如the的深度可能很深,而不常見的Aha的深度卻可能很淺。根據直覺,我們應該讓本例中the更加靠近樹根才對(其實即使機率最高也不見得就是樹根)。我們應該讓尋找整個樹的期望次數最小,即構建一個最優二叉尋找樹。一個最優二叉尋找樹的左右子樹的
Time of Update: 2018-12-04
今天看1+1=2大牛的Qt文章中關於多線程的部分,於是自己想動手實現一下,沒想到遇到這種問題undefinedreferenceto`vtable for
Time of Update: 2018-12-04
昨天寫守護進程的時候要關閉從父進程那裡繼承的檔案,碰到了這個函數,結果我用的時候說我未定義,今天才發現寫成了gettablesize(),把d落下了,唉!它返回所在進程的檔案描述附表的項數,即該進程開啟的檔案數目。下面是英文描述,很簡練很好,不翻譯了getdtablesize()Get the size of the file descriptor tableSynopsis:#include <unistd.h>int getdtablesize( void );Library:
Time of Update: 2018-12-04
動態規劃研究的問題與分治法區別:動態規劃的子問題不是相互獨立的,而是有交集,即子問題相互重疊,為了避免重複計算重疊的子問題,所以選擇從底向上的迭代,以後用到直接查表。從而將裝配線調度的複雜度從O(2^n)降到了O(n)。代碼如下:#include <iostream>using namespace std;void FastestWay(int (*a)[7],int (*t)[7],int *e,int *x,int n,int (*f)[7],int (*l)[7],int
Time of Update: 2018-12-04
這個是相對前一篇文章來說的,這是個迭代版本。遞迴化為迭代的一個關鍵點,就是看遞迴調用時,哪些參數值發生改變,然後針對這個參數設計迴圈。#include <string.h>#include <time.h>#define BUFFER_SIZE 10int RandomizedPartition(int *a,int p,int r){int i=0;int j=0;int tmp=0;int x=0;srand((unsigned)time(NULL));i=rand(
Time of Update: 2018-12-04
裝配線調度與矩陣鏈乘法是很典型的動態規劃的兩個例子。關於這倆例子對於理解動態規劃的作用稍後補上。這個程式的時間複雜度為Ω(n^3),這個可以通過替換法證明。輸出最優加括弧的代碼對於理解遞迴很有協助,蹭蹭蹭,先往回跑,路上什麼也不幹,跑到頭再跑回來,把該乾的都幹了,先自頂向下,再自底向上。代碼如下:#include <iostream>using namespace std;void MatrixChainOrder(int (*a)[2],unsigned int
Time of Update: 2018-12-04
題目:解釋如何?演算法PERMUTE-BY-SORTING,來處理兩個或更多優先順序相同的情況。即,即使有兩個或更多個優先順序相同,你的演算法也必須產生一個均勻隨機排列。剛才在百度演算法吧看到有人提出這個問題,居然將近四年沒人回答。我回複了一下那個文章,順便把自己的看法複製到這裡。若有問題,請路過的大牛協助斧正,不勝感激。我的解答:打比方有a,b,c,d這個序列,我們用0-3隨機給它們編號。假設隨機編號如下a--1,b--2,c--2,d--3。這就有問題了,因為b,c編號都是2,怎麼弄呢?繼續
Time of Update: 2018-12-04
時間複雜度為O(m*n),就是兩個迴圈。#include <iostream>using namespace std;void LCSLength(char *x,char *y,int m,int n,int (*c)[7],int (*b)[7]){for(int i=0;i<=m;i++){c[i][0]=0;}for(int i=0;i<=n;i++){c[0][i]=0;}for(int i=1;i<=m;i++){for(int j=1;j<=n;