原创 排序練習

九度1185題目描述:輸入一系列整數,將其中最大的數挑出,並將剩下的數進行排序。 12輸入:輸入第一行包括1個整數N,1<=N<=1000,代表輸入數據的個數。 接下來的一行有N個整數。 123輸出:可能有多組測試數據,對於每組數據, 第

原创 排序類方法(冒泡、sort快排)

冒泡排序 複雜度O(n²)100*100=10000在百萬級別內(1s內) #include<stdio.h> int main(int argc, char* argv[]) { int n; int a[100]; while

原创 棧類問題

棧的基本操作  棧的相關操作可使用C++模板庫裏的函數 #include<stack> using namespace std; 定義一個棧 stack<int> S; S.push(i); 將數值i壓入棧 int x=S.top();

原创 堆排序

北大17年機試中就出現了堆排序的題,今天上課也講到了這個算法,索性實現一下。堆排序算法理解起來很容易:1. 先遍歷節點(除葉子之外),不斷比較節點與左右子樹的大小並進行swap交換,進行一個adjust調整的遞歸調用,最終堆頂爲最大或者最

原创 一些機試題

二維數組右上左下遍歷描述給定一個row行col列的整數數組array,要求從array[0][0]元素開始,按從左上到右下的對角線順序遍歷整個數組。輸入輸入的第一行上有兩個整數,依次爲row和col。餘下有row行,每行包含col個整數,

原创 遞歸

好久沒更了,但是還是堅持了每天至少一題。。今天更遞歸,雖然我老是在遞歸上犯迷糊,但是背也得背下來先看遞歸經典問題漢諾塔問題漢諾塔(又稱河內塔)問題是源於印度一個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往

原创 最長遞增子序列LIS

<動態規劃進階啦>在已知序列中,取出若干數組成新的序列,這個序列下標和大小要按照從小到大或者從大到小的順序,找出最長子序列。F[1]=1;F[i]=max{1, F[j]+1 | aj<ai && j<i };for (i = n-1;

原创 深度遍歷搜索DFS

我發現深度遍歷搜索其實用的算法就是遞歸啊。。。這種成了模型的代碼還是要多敲練手感。。九度1461這個程序敲得很順,但是debug了好久,因爲各種細節問題。。題目描述:The doggie found a bone in an ancien

原创 並查集

數據結構——集合用來表示集合信息,用以實現如確定某個集合含有哪些元素、判斷兩個元素是否存在在同一集合中 、求集合中元素個數等問題。方法:用一棵樹來表示一個集合,判斷是否在一個集合中,只需判斷是否在一棵樹上。定義數組Tree[]來表示雙親結

原创 最長公共子序列LCS

此類問題一般是給出兩個或多個字符串,然後找出最長的相同子序列。方法(兩個字符串爲例):dp[0][i]=0  i∈[0,length(str1)]dp[i][0]=0  i∈[0,length(str2)]dp[i][j]=dp[i-1]

原创 貪心poj練習

今天做了一個貪心練習的變形,感覺很不錯,雖然自己調錯誤調了很久,但是全都是自己寫出來的代碼,感覺還是很開心的POJ1328該題將點座標轉化成線段,即以每個小島爲圓心,以d爲半徑做圓看與x軸的交點,每個線段利用貪心算法從左至右求解Descr

原创 動態規劃poj練習

poj 3176 Cow BowlingDescriptionThe cows don't use actual bowling balls when they go bowling. They each take a number (i

原创 遞推問題

遞推問題主要涉及到兩大類,背過方法即可1. 普通遞推(爬樓梯問題)2. 錯排問題 :運用錯排公式 F[N]=(N-1)*F[N-1]+(N-1)*F[N-2]例一:九度1205題目描述:N階樓梯上樓問題:一次可以走兩階或一階,問有多少種上

原创 揹包問題

動態規劃中運用非常多的是揹包問題揹包問題一共有三種:1. 0-1揹包問題2. 完全揹包問題(需要把揹包裝滿,只需要在0-1揹包的基礎上改變一下初始化即可)3. 多重揹包問題(相當於0-1揹包問題的演變)例一 九度1123 0-1揹包問題題

原创 一些tips

1. 堆  大頂堆priority_queue<int> q;        小頂堆   struct cmp { bool operator()(int a, int b) { return a > b; } }; priori