第五次實踐報告
阿新 • • 發佈:2020-12-20
1. 你對回溯演算法的理解
首先一點就是bound函式
int bound(int t){ int b=cp; int i; for(i=t;i<=n;i++){ b+=vi[i]; } return b; }
緊縮型和寬鬆型這兩種要會,其次就是backtrack,
void backtrack(int t){ if(t>n){ if(bestp<=cp){ bestp=cp; } return; } if(cw+wi[t]<=c){ //左子樹 cw+=wi[t]; cp+=vi[t]; backtrack(t+1); cw-=wi[t]; cp-=vi[t]; } if(bound(t+1)>bestp){ backtrack(t+1);//進入右 } }
2. 你學習《演算法分析與設計》課程的收穫
分治法,貪心演算法,動態規劃,回溯這四大,分治法就是一分為二,貪心演算法離不開sort還有標頭檔案<algorithm>,動態規劃就是f(n,m)=max{f(n-1,m), f(n-1,m-w[n])+P(n,m)},回溯就是上面講到的bound和backtrack。0-1揹包有一億種解,學到了學到了。
3. 你在學習過程中曾遇到了哪些困難,希望老師或助教及時給予幫助。
可能就是2-3二分法求函式的零點 這道題吧,我現在還是一臉懵的狀態,其他倒還好。
4. 你對本門課程的教學有哪些建議
暫無