第五章作业及学期总结

 

1. 你对回溯算法的理解

回溯法,就是试探法,按照优选条件去向前搜索,以达到目标。

但是在搜索到某一步时,发现原先这样并不能满足条件,就回退一步重新选择,这种走不通就退回再走的技术成为回溯法。

在做回溯法的题目的时候,有添加状态或元素就一定有与之对应的回退状态和元素。若是寻找成功,回退以查看有没有其他满足条件的解;如果寻找不成功,回退以查看其它情况。

例如这次在我们解决01背包问题的时候,我还是很懵的,毕竟之前都是用动态规划法去解决这样子的问题,换做是回溯法,就是 下面这样子;

#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int n,TotCap,bestval;//物品的个数,背包的容量,最大价值
const int N=1000;
int val[N],w[N],x[N],bestx[N];//物品的价值,物品的重量,x[i]暂存物品的选中情况,物品的选中情况
void dfs(int i,int cv,int cw)
{  //cw当前包内物品重量,cv当前包内物品价值
    if(i>n)//结束
    {
        if(cv>bestval)
        {
            bestval=cv;
        }
    }
    else 
        for(int j=0;j<=1;j++)  
        {
            x[i]=j;//取或者不取 
            if(cw+x[i]*w[i]<=TotCap)  
            {
                cw+=w[i]*x[i];
                cv+=val[i]*x[i];
                dfs(i+1,cv,cw);
                cw-=w[i]*x[i];
                cv-=val[i]*x[i];
            }
        }
}
 
int main()
{
    cin>>n>>TotCap;
    for(int i=1;i<=n;i++){
        cin>>w[i]>>val[i];
    }
    dfs(1,0,0);
    cout<<bestval<<endl;
    return 0;
}

一开始我们不知道要怎么去用c++表达我们想要达到的一个效果;后来反复看了几遍郑琪老师给我们的ppt上面的解释,我们才逐渐清晰起来。

 

2. 你学习《算法分析与设计》课程的收获

 本学期该课程可以说是我打代码的一个巅峰了,我开始喜欢上打代码的感觉,大一的时候因为学c++学得很痛苦,从此自闭了,不喜欢打代码,也立志远离打代码的工作;上了算法课后,刚开始对郑老师的“不打完讲解完不让吃饭”的可怕宣言吓到了,但是这也督促我自己赶紧去学习或者看懂代码,虽然时至今日还是很菜,菜到我队友马上能看懂的东西我要看几遍才逐渐清晰,但是厌恶打代码的心逐渐改变了,好像也没这么讨厌了,虽然是一个有点像逼着学 的过程,但是最后,我们收获了很多代码知识,确实,对于这种枯燥晦涩的知识摄入,我们不主动,只有靠老师逼着我们主动才能获得一个好的知识吸收(hhh打这一段的时候我有点担心我话说早了,还是很怕期末考的,但是都是心里话);

说点正经的,这学期我们学了分治法,二分搜索算法,动态规划法,贪心法,回溯法,其中我能主动打出来并且完美解释的大概是贪心法,但是后来讲解了01背包问题后,我感觉动态规划法好像也勉强能搞出来??都是主观看法,算法这一方面还是要靠多打题,我觉得我这方面没有做得很好,都是把老师要求的做好之后就没有继续学习了,也基于我的c++基础不是很好,我个人还是不太热爱打代码的。

总而言之,我在郑琪老师的课堂上收获到了很多内容,如果我是一个更加积极主动进取的学生的话,我相信我能够学到更多,学得更好。本门课程要结束了,即将要进行期末考,我的内心虽然很焦虑,但是想到这门课已经让我获得了一些超乎我原本想象的东西,我觉得挺值得的。

3. 你在学习过程中曾遇到了哪些困难,希望老师或助教及时给予帮助

我在学习过程中往往会因为一些基础知识没有掌握牢固而出错的困难,会有一些低级得不得了的bug,但是我一般会找同学给予帮助(因为我觉得,这么菜的bug不好意思找助教,怕被diss)

4. 你对本门课程的教学有哪些建议

 本门课程让我感觉到有种压迫感,但是到了最后,发现这种压迫感是对我们有帮助的,平时就是希望能出一些题解的模板,菜鸡理解了之后可能就可以直接套用了,但是好像也没有什么很大的必要。其次就是郑琪老师人很可爱,我经常被他问的问题梗住,笑个不停,不管是哪方面来看,郑琪老师都是一个认真负责,积极进取的好老师(起码在我心目中)下学期选了郑琪老师的操作系统实践,哈哈哈,又可以听到他的教学了。虽然不知道郑琪老师会不会看这个博客,但是希望他能够天天准时吃上饭(毕竟每次等我们讲完题他才是最后一个离开的),吃好喝好睡好,天天开心。

posted @ 2020-12-20 09:57  JJH-Y  阅读(89)  评论(0编辑  收藏  举报