原创 基本排序算法之冒泡排序

冒泡排序的基本方法是:設待排序元素序列中的元素個數爲n,首先比較第1個和第二個元素,如果前一個元素大於後一個元素,則將兩個元素互換;然後對第二個(可能是剛換過來的)和第三個元素做同樣的處理;重複此過程直到處理完第n-1和第n個元素。我們稱

原创 C\C++編程題之尋找醜數

醜數的定義:醜數是指那些因子只含2,3,5的數,爲方便起見,1也視爲醜數 故1,2,3,4,5,6,8,9,10,12,15是最前面的醜數,請編寫一個程序,輸出第N(N<=300)個醜數。(N爲輸入值)  如果輸入非法值,請返回 -1  

原创 C/C++編程題之整數轉IP地址

將輸入的整數IP信息轉換爲string型IP信息,即X.X.X.X的格式  輸入:string類型的值 輸出:X.X.X.X的格式的IP信息 返回:正常解析時返回非空的IP信息,異常時strIP爲空值 代碼 <pre name="cod

原创 基本排序算法之快速排序

快速排序算法是一種劃分交換的方法,它採用分治法進行排序。其基本思想是:設要排序的數組是A[0]……A[N-1],首先任意選取一個數據(通常選用數組的第一個數)作爲關鍵數據,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個

原创 01揹包問題的動態規劃算法

01揹包問題我最初學會的解法是回溯法,第一反應並不是用動態規劃算法去解答。原因是學習動態規劃算法的時候,矩陣連乘、最長公共子串等問題很容易將問題離散化成規模不同的子問題,比較好理解,而對於01揹包問題則不容易想到將揹包容量離散化抽象出子問

原创 C/C++程序題之三天打漁兩天曬網

俗話說三天打漁兩天曬網,某人從2010年1月1日開始打三天魚,然後曬兩天網,然後再打三天魚,再曬兩天網,周而復始,輸入任意一天,求該天是打漁還是曬網  #include <stdlib.h> // 功能:從2010年1月1日起判斷輸入

原创 回溯法求迷宮問題

回溯法(探索與回溯法)是一種選優搜索法,又稱爲試探法,按選優條件向前搜索,以達到目標。但當探索到某一步時,發現原先選擇並不優或達不到目標,就退回一步重新選擇,這種走不通就退回再走的技術爲回溯法,而滿足回溯條件的某個狀態的點稱爲“回溯點”。

原创 基本排序算法之插入排序

插入排序的基本方法是:每步將一個待排序的元素,按其排序碼大小,插入到前面已經排好序的一組元素的適當位置上去,直到元素全部插入爲止。可以選擇不同的方法在已經排好序的有序數據表中尋找插入位置。依據查找方法的不同,有多種插入排序。下面介紹直接插

原创 extern關鍵字使用方法

extern可以置於變量或者函數前,以標示變量或者函數的定義在別的文件中,提示編譯器遇到此變量和函數時在其他模塊中尋找其定義。此外extern也可用來進行鏈接指定。       也就是說extern有兩個作用,第一個,當它與"C"一起連

原创 C/C++編程題之淵子賽馬

古有田忌賽馬的故事,現在淵子也來賽一賽馬。假設每匹馬都有恆定的速度,所以速度大的馬一定比速度小的馬先到終點(沒有意外!!)。不允許出現平局。最後誰贏的場數多於一半(不包括一半),誰就是贏家(可能沒有贏家)。淵子有N(1≤N≤1000)匹馬

原创 BFS求解迷宮最短路徑

<p>本文使用BFS廣度優先搜索算法實現求解迷宮的最短路徑(C++),使用到了隊列先進先出的性質,依次搜索路徑直到找到目標出口(如果迷宮能走通)求解到的路徑即爲該迷宮的最短路徑,找到返回true,找不到返回false,本文使用vexmap

原创 C/C++編程題之完美數判斷

完美數判斷:如果一個數,等於其因數之和,那麼這個數就成爲完美數 例如:6是完美數,因爲6=1+2+3。 代碼:/* 功能: 完美數判斷 輸入: number 輸出: 返回: 0:不是 1:是

原创 C/C++編程題之計算一個數字的立方根

計算一個數字的立方根方法:使用對數和指數組合的方法表示立方根。loga(b)表示 以a爲底,b的對數,a(m)表示a的m次方。我們知道a(loga(b))等於b,並且nloga(b)等於log以a爲底b的n次方。結合這兩個性質,我們可以得

原创 守望者的逃離—貪心算法

問題描述<span style="font-family:KaiTi_GB2312;"><span style="FONT-SIZE: 10.5pt">惡魔獵手尤迪安野心勃勃.他背叛了暗夜精靈,率深藏在海底的那加企圖叛變:守望者在與尤迪安

原创 C/C++編程題之IP地址轉整數

/* 功能:將輸入的string類型的IP信息轉換爲string類型  * 輸入:string類型的IP信息  * 輸出:DWORD結果,正常返回解