#include <stdio.h>#include <string.h>const int MaxN = 1000;typedef enum PointerTag {Link , Thread};/*以中序線索化為例,線索化的重點:進行一次普通的中序遍曆,過程中對null
/*過了一年再學KMP,為AC自動機做準備。嚴蔚敏的《資料結構》P82講的還算清楚。不想學的直接拉去做模板吧,適合一個字串去匹配多個目標串。*/#include <stdio.h>#include <string.h>const int MaxN = 1000;char a[MaxN] , b[MaxN];int next[MaxN];void get_next(char *s){next[1] = 0;int i = 1 , j = 0 , l = strlen(s -
想要學習本演算法的朋友可以從這裡下載周源的最小標記法ppt。/*最小標記法痛點:證明為何是最小表示失配後為什麼這樣跳躍(經典)最佳化*/#include <stdio.h>#include <string.h>const int MaxN = 101;char a[MaxN] , b[MaxN];//判斷兩字串是否迴圈同構bool Same(char *a , char *b){int la = strlen(a) , lb = strlen(b);int p1 = 0
Kosaraju演算法求有向圖強連通分量。看了一下,這裡講得比較詳細。#include <stdio.h>#include <string.h>#include <vector>using namespace std;/*num[]記錄訪問頂點序列stc[]記錄頂點所屬連通分支E1[]原圖E2[]反圖visited[]雜湊已訪問頂點*/const int MaxN = 101;typedef vector < int >
我是看了這個以後瞭解快排的,一邊看,一邊自己撕了8張紙頭類比。快排想法還比較簡單,直接拉了嚴蔚敏的代碼。對於快速排序的種種最佳化,希望高手能夠指點。待到幾個最常見的排序演算法上齊了,一定將最佳化技巧奉上。 /*快速排序基礎版本未作最佳化,很多時候原數組是有序的,此時(也是最壞情況)時間複雜度到O(n^2),並且棧的深度也到O(n)。一個比較省力又效果顯著的最佳化是每次選擇區間段中間的數來分割,進而分治排序。《資料結構》P277中提到的降低棧深度的方法不甚理解,望高手指點。*/#include &
這個不知有什麼可以最佳化的。/*歸併排序非遞迴演算法實質上就是後序遍曆二叉樹,剛好後序非遞迴比較生疏,敲一遍無妨。話說回來,歸併排序用非遞迴做實在感覺不出有什麼優點,棧深一定是O(log(n)),常數也很小。就權當作熟悉後序非遞迴遍曆吧。*/#include <stdio.h>struct interval{int l , r;interval(){}interval(int _l , int _r):l(_l) , r(_r){}};typedef interval
早上倉促敲出來的,演算法大多數是YY出來的,不是很地道。晚上回來參考點資料,來個地道的。這個排序叫冒泡更形象。#include <stdio.h>#include <string.h>const int MaxN = 10001;class Heap{public:Heap():cnt(0){}int Top(){return a[1];}int min(int _a, int _b){return a[_a] < a[_b] ? _a : _b;}int
搜尋是一種通用的演算法,覆蓋面廣,放諸四海而皆準。單我所知的,就有盲搜( ==||| )、廣搜、深搜、迭代加深、二分、三分、 A* 、字串搜尋等等。搜尋經常是其他演算法的基礎;或者其他演算法,往往通過對搜尋演算法加以最佳化得到。並且,搜尋往往需要一定的代碼量,剛好練練我們的 coding。本周,我們將重點放在廣搜和深搜上,直接從 OJ 上找了些初、中等題,放在這個DIY裡面,密碼 whatsyourname 。本周任務要求:1. 本周( 11 月 30
又敲了一遍堆,有了更深的理解。插入操作:在數組尾部加入元素,自動上浮。刪除操作:將數組尾部元素提到根節點,向小的子節點下沉。印象中優先隊列會是指標+繁瑣操作的,實則代碼可以簡化到6行內。只比SPFA是稍遜一點,rank2的最短路演算法。#include <stdio.h>#include <stdlib.h>#include <vector>using namespace std;const int MaxN = 10001;const int INF = 0
#include <stdio.h>#include <string.h>#include <vector>#include <queue>#include <iostream>using namespace std;const int MaxN = 201;const int INF = 0x7fffffff / 2;typedef struct {int l , v;}Edge;typedef vector < Edge
沒見過這麼搓的題目。。。如果出什麼題目,最好在細節上不要給人以誤導或者矛盾。這樣還不如不交待細節。/*航空客運訂票系統1 問題描述航空客運訂票的商務活動包括:查詢航線、客票預訂和辦理退票等。試設計一個航空客運訂票系統以使上述業務可以藉助電腦來完成。1.1 每條航線所涉及的資訊有:終點站名、航班號、飛機號、飛行周日(星期幾)、乘員定額、餘票量、已訂票的客戶名單(包括姓名、訂票量、艙位等級1,2或3)以及等候替補的客戶名單(包括姓名、所需票量)1.2 作為示意系統,全部資料可以只放在記憶體中1.3
當置位, 它指出任何在一個 IN 端點上可能發生的短讀, 應當被 USB 核心當作一個錯誤. 這個值只對從 USB 裝置讀的 urb 有用, 不是寫 urbs.URB_ISO_ASAP如果這個 urb 是同步的, 這個位可被置位如果驅動想這個 urb 被調度, 只要頻寬允許它這樣, 並且在此點設定這個 urb 中的 start_frame 變數. 如果對於同步 urb 這個位沒有被置位, 驅動必須指定 start_frame 值並且必須能夠正確恢複, 如果沒有在那個時刻啟動.
navit版本: r4846,cegcc版本: 0.59.1官方網站上介紹可以用mingw32ce來做,但是我試了一下有問題就沒有再深入,改為用cegcc來做,不過也花了一些時間。配置指令碼內容如下:PATH=/opt/cegcc/bin:$PATH \CFLAGS="-I/usr/wince/include -mwin32 -DWIN32 -D_WIN32_WCE=0x0600 -D_WIN32_IE=0x0400 -Wl,--enable-auto-import"
/*a ^ x = n (mod p)計算x,該代碼僅解決p為素數*/#include <string.h>#include <stdio.h>#include <math.h>#include <algorithm>#include <iostream>using namespace std;typedef struct { int res, times; } rem;typedef __int64 LL;rem r[1000001
由於項目需要,最近看了下TCPMP(.72.sc1)原始碼。網上深入分析TCPMP原始碼的文章很少。《TCPMP播放器到WINDOWSCE平台的移植編譯過程》一文對在EVC下編譯TCPMP的介紹甚是詳盡,非常適合入手。《WINCE TCPMP應用》與《水煮TCPMP》兩篇文章簡要介紹了下TCPMP的結構和各部分的功能,個人認為遠遠沒有達到水煮的境界,但還是很值得一看。 TCPMP作為一個強大的開源播放器,支援ARM,MIPS,SH3,X86等硬體平台。我分別在WINCE
一看題目,物理比較犀利的同學想必早就知道和積分無關了。就是求整個簡單多邊形對原點的張角。對每一邊求張角的上下界,我用的是atan2(y,x),要考慮有的邊跨越x正方向的情況(此時上下界有所不同)。然後就是區間求並,當然也有更好方法。#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>const double PI = acos(-1.0);double
本周任務,從12月8日(星期二)至12月15日(星期二)。搜尋能力不是短短几天能夠練就的。本周繼續進行加深練習,想必上周已經接觸了DIY中的幾道題目,剩下一些一定會是有挑戰的。其實值得一做的就是這些一時沒有思路,需要點想法的題目。1.12月8日~12月15日在第一周DIY中繼續做至少6道題目(題量減少,難度卻增加了),如果覺得對前面的基礎練習掌握地還不夠,可以到這裡補充練習,密碼同樣是whatsyourname。2.對於做過的題目,寫上一兩句思路、感受,類似於解題報告。作為驗收的憑據。3.以後我
1.Factory 方法模式(Factory Method) 定義一個用於建立對象的介面,讓子類決定執行個體化哪一個類,原廠模式使一個類的執行個體化延遲到其子類.
在數字音頻Datasheet中,我們經常看到256FS,384FS,32kHz,44.1kHz MCLK等概念。一般在數字音頻晶片用3個pin作為通訊介面:BCLK,ADCLRC,DOUT。現在做個總結。1. SAMPLING RATE:32kHz,44.1kHz,48kHz,96kHz:音頻採樣率,越高聲音品質越高。256fs中“fs” 就是表示audio sampling
兩年前因為要移植一些linux功能庫曾經用過cegcc0.51(自己下載代碼重新編譯的),之後就沒有用過。這兩天閑來無事想把pixman移植到wince就上到SF上發現已經更新到0.59.1了,一時興起就又下了代碼編譯,現在把出現的問題記錄下來就當是溫故知新吧。需要說明的是現在SF上有三個交叉編譯環境,cygwin是在windows下用的,cegcc和mingw32ce則是在linux下用的。考慮到pixman是在linux下用的,因此下載cegcc來進行編譯