經典遞迴題目: 漢諾塔問題
1 #include 2view codeusing
namespace
std;3//
x為起點,y為跳板,z為終點
4void hannuota(int n,char x,char y,char
z) 13}
1415
intmain()
分治法入門之二分查詢
/*view code分治法--二分查詢
*/#include
using
namespace
std;
//陣列不能為亂序,必須要遞增或遞減。要是有多個數相等的話就需要修改程式
//q為下界,p為上界 x為查詢數
int a[10]=;
int binsearch(int q,int p,int
x)int
main()
排序演算法:
歸併排序:
#includeusingview codenamespace
std;
int a[10]=;
void heb(int low,int mid,int
high);
void fenlei(int low,int
high)
}void heb(int low,int mid,int
high)
else
//前後兩端進行比較,將小的那個丟在b裡面
}
//如果前半段有剩餘的
if(h<=mid)
else
//如果後半段有剩餘
for(k=j;j<=high;j++)
b[i++]=a[k];
//將b中的都丟給a
for(k=low;k<=high;k++)
a[k]=b[k];
}int
main()
快速排序
#includeusingview codenamespace
std;
int a[9]=;
void swap(int &a,int &b)
}void quicksort(int a,int low,int
high)
while(low!=high)
quicksort(a,i,low-1);//
前半段排序
quicksort(a,low+1
,j);
}int
main()
最後是乙個能夠快速呼叫排序的方法,不用一點一點的把**寫出來
匯入標頭檔案使用sort排序
#include#includeview codeusing
namespace
std;
bool com(int a,int
b)int
main()
; sort(a,a+10
,com);
for(i;i<10;i++)
cout
}
回溯和遞迴的區別
最近看資料結構,發現用到了很多遞迴和回溯的問題,實在是不知道這兩具體有啥區別,最近查了點資料,大概總結一下。遞迴 為了描述問題的某一狀態,必須用到該狀態的上一狀態,而描述上一狀態,又必須用到上一狀態的上一狀態 這種用自已來定義自己的方法,稱為遞迴定義。形式如 f n n f n 1 if n 0,f...
回溯 八皇后問題(遞迴和非遞迴)
8皇后問題 如何在 8 x 8 的西洋棋棋盤上安排 8個皇后,使得沒有兩個皇后能互相攻擊?如果兩個皇后處在同一行 同一列或同一條對角線上,則她們能互相攻擊。解向量為長度為8 的陣列,記為 solution 因為共有 8個皇后,而棋盤剛好為 8 8,所以每一行肯定會有乙個皇后,那麼我們約定 solut...
leetcode題解 遞迴和回溯法
現在我們來看遞迴演算法中非常經典的思想回溯法,這樣的演算法思想通常都應用在一類問題上,這類問題叫做樹型問題,這類問題他本身沒有定義在一顆二叉樹中,但我們具體分析這個問題時就會發現解決這個問題的思路本質是一顆樹的形狀。解題思路比如我們輸入的digits 23 2能代表abc三個字母,當2代表a時,3代...