#include
using
namespace std;
/*遞迴實現機械人台階走法統計
引數: n - 台階個數
返回:上台階總的走法
f(n) = f(n-1) + f(n-2);
*///分治演算法
intwalkcount1
(int n)
}/*動態規劃是一種分治思想,但於分治演算法不同的是,
動態規劃是自底向上先求最小的子問題,
把結果儲存在**中,在求解大的子問題時,
直接查詢小的子問題的解,避免重複計算,從而提高效率
*///用陣列儲存計算情況使之避免重複計算
intwalkcount2
(int n)
ret = value[n]
;delete value;
return ret;
}int
main()
參考a*演算法
#include
using
namespace std;
/* 分:遞迴解決較小的問題
治:然後從子問題的解構建原問題的解
分解,解決,合併
分解成諾幹個小問題,問題小容易解決,將子問題的解合併成原問題的解
*///遞迴二分查詢
intbinarysearch
(int
*list,
const
int left,
const
int right,
const
int x)
else
if(x > list[mid]
)else
}return-1
;}intmain()
;int index =
binarysearch
(girls,0,
9,15)
; cout << index << endl;
system
("pause");
return0;
}
#include
using
namespace std;
bool
haspathcore
(const
char
* matrix,
int rows,
int cols,
int row,
int col,
const
char
* str,
int& pathlength,
bool
* visited);/*
功能:查詢矩陣中是否含有str指定的字串
引數說明:
matrix 輸入矩陣
rows 矩陣行數
cols 矩陣列數
str 要搜尋的字串
返回值:是否找到 true 是,false 否
*/bool
haspath
(const
char
* matrix,
int rows,
int cols,
const
char
* str)}}
delete
visited;
return
false;}
/*探測下乙個字元是否存在*/
bool
haspathcore
(const
char
* matrix,
int rows,
int cols,
int row,
int col,
const
char
* str,
int& pathlength,
bool
* visited)
bool haspath =
false;if
(row >=
0&& row < rows&&col >=
0&& col < cols&&matrix[row*cols + col]
== str[pathlength]
&&!visited[row*cols + col]
)return haspath;}}
/*單元測試*/
void
test
(const
char
* testname,
const
char
*matrix,
int rows,
int cols,
const
char
* str,
bool expected)
//abtg
//cfcs
//jdeh
void
test1()
//abce
//sfcs
//adee
void
test2()
//abtg
//cfcs
//jdeh
void
test3()
//abcehjig
//sfcslopq
//adeemnoe
//adidejfm
//vceifggs
void
test4()
void
test5()
void
test6()
void
test7()
void
test8()
void
test9()
intmain()
#include
#define n 7
int value[n]=;
int count[n]=;
/*貪心演算法
把子問題對應的區域性最優解合成原來整個問題的應該近似最優解
*//*
對輸入的零錢數,找到至少要用的紙幣數量
引數:money - 要找/支付的零錢數
返回:至少要用的紙幣數量,-1表示找不開
*/int
solve
(int money)
//減去得到剩下需要找零的錢
money -
= c * value[i]
;//需要錢的張數
num +
= c;
if(money ==0)
break;}
if(money >
0)num =-1
;return num;
}int
main()
else
system
("pause");
return0;
}
五大演算法三 貪心演算法
一 基本概念 所謂貪心演算法是指,在對問題求解時,總是做出在 當前看來是最好的選擇 也就是說,不從整體最優上加以考慮,他所做出的僅是在某種意義上的 區域性最優解 貪心演算法沒有固定的演算法框架,演算法設計的關鍵是貪心策略的選擇。必須注意的是,貪心演算法不是對所有問題都能得到整體最優解,選擇的貪心策略...
五大常用演算法 貪心演算法
一 基本概念 所謂貪心演算法是指,在對問題求解時,總是做出在 當前看來是最好的選擇 也就是說,不從整體最優上加以考慮,他所做出的僅是在某種意義上的 區域性最優解 貪心演算法沒有固定的演算法框架,演算法設計的關鍵是貪心策略的選擇。必須注意的是,貪心演算法不是對所有問題都能得到整體最優解,選擇的貪心策略...
五大常用演算法 貪心演算法
貪心演算法是指 在每一步求解的步驟中,它要求 貪婪 的選擇最佳操作,並希望通過一系列的最優選擇,能夠產生乙個問題的 全域性的 最優解。貪心演算法每一步必須滿足一下條件 1 可行的 即它必須滿足問題的約束。2 區域性最優 他是當前步驟中所有可行選擇中最佳的區域性選擇。3 不可取消 即選擇一旦做出,在演...