第五掌实践报告

一、对回溯算法的理解

在我的理解中,回溯法就是把一个问题当作一棵“树”,然后对其进行dfs,直到找到答案,需要注意的是在回溯法中,需要进行剪枝,用限界函数和题目特定的规则进行剪枝,于是能减少时间复杂度。

二、子集和”问题的解空间结构和约束函数

       “子集和”问题的解空间结构与“0-1背包”类似,对于n数时,该解空间包含对变量的所有可能的0-1赋值。“1”代表选择该数,“0”代表不选该数。

       其约束函数为对于第i个数的选择,有选和不选,若是把之后的所有数字全选进去,都达不到目标值,那么就可以不用继续遍历了,于是乎求一个前缀和,每次判断一下就行。

void dfs(int cnt,int num ){
    if(sum[cnt]+num<N){//这就是约束函数
        return;
    }
  ... }

三、在本章学习过程中遇到的问题及结对编程的情况

  在算法大作业中,我和黄啸宇体验了一把做游戏的感觉,但奈于经验不够,对俄罗斯方块AI算法的改造没有成功,但两个人的编程能力都得到了大幅度的提升,希望在寒假把这个项目完成。

猜你喜欢

转载自www.cnblogs.com/qq2210446939/p/12070729.html
今日推荐