第五次实践报告
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. 你对本门课程的教学有哪些建议
暂无