《演算法高階指南》 0 2遞推與遞迴

2022-09-19 21:36:18 字數 1862 閱讀 4882

總結:遞迴、遞推提高效率,其他題還好一些,此章解決了我之前對漢諾塔的疑惑,提公升了對二進位制表示狀態的理解,但最後一題分形之城還是有點模糊,在後續學習中常回頭。

int qmi(int a,int b)//快速冪

return res;

}int sum(int p,int c)//分治求sum

int main()

if(s) res = res * sum(i,s * b) % mod;

}if(!a) res = 0;

cout此題有點模糊

#include#include#includeusing namespace std;

typedef long long ll;

typedef pairpll;

pll cacl(ll n,ll m)

; ll len = 1ll << (n - 1);//象限邊長

ll cnt = 1ll << (2 * n - 2);//等級n - 1中容量

pll pos = cacl(n-1,m % cnt);

ll x = pos.first,y = pos.second;

int z = m / cnt;//處於哪個象限

if(z == 0) return ;

else if(z == 1) return ;

else if(z == 2) return ;

return ;

}int main()

return 0;

}

#include#includeusing namespace std;

const int inf = 100000;

char g[10][10];

int dx = , dy = ;

void turn(int x,int y)//偏移量來進行上下左右中狀態的改變

}}int work()

}for(int i = 0;i < 4;i++)

for(int j = 0;j < 5;j++)

}bool is_successful = true;

for(int j = 0;j < 5;j++)//看下最後一行是否全是1

if(g[4][j] == '0')

if(is_successful) ans = min(ans,res);

memcpy(g,backup,sizeof g);//復原陣列

}if(ans > 6) return -1;

return ans;

}int main()

int main()

else

}

演算法競賽高階指南0 2 遞推與遞迴

目錄 1.實現指數型列舉 3 2.遞迴實現組合型列舉 3 3.遞迴實現排列型列舉 4 4.費解的開關 5 5.strange towers of hanoi 6 6.sumdiv 8 7.分型之城 10 從n個數中選任意多個數 並輸出 include using namespace std int ...

《演算法競賽高階指南》0x02 遞迴與遞推 學習總結

感受 遞迴中的分形太簡單了,基本就是個找規律 遞迴,講一講分治 分治,即分而治之 個人認為,其實它和二分差不多 或者二分其實是它的一部分?二分和分治的區別,在我看來,是二分需要有決策單調性,而分治貌似不需要?借助分治,把答案的複雜度從n 2降級到nlogn 其中,還是二分的思路,先把問題的當前狀態一...

演算法反芻 遞迴與遞推

對於遞迴和遞推的非常專業的定義和解釋在這裡就不再copy了,私以為演算法的關鍵是運用和實踐,就好比圍棋,規則簡單但是入門的門檻很高,就算熟練記憶規則也沒法下好一盤棋。likewise,對於演算法學習,最關鍵是有乙個演算法的慣性在腦子裡,這要比熟記定義重要得多,因為這需要深刻的掌握。對於演算法的學習需...