1. 程式人生 > 實用技巧 >第五次實踐報告

第五次實踐報告

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. 你對本門課程的教學有哪些建議

暫無