三爽

导航

第五次实践报告

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. 你对本门课程的教学有哪些建议

暂无

posted on 2020-12-20 11:46  三爽  阅读(86)  评论(0编辑  收藏  举报