算法第五章作业
一、对回溯算法的理解
回溯法算是一种通用解法,因为用回溯法能搜索一个问题的所有解或者任一解。因为回溯法是先找出问题的解空间,然后进行深度优先遍历,找出所有可行解。可以通过约束函数和限界函数(统称为剪枝函数)减少遍历次数从而优化时间复杂度。
二、“子集和”问题的解空间结构和约束函数
1、解空间结构
非负非零的整数集合 S = {x1, x2, …, xn} 对应的一个子集 S1,S1 中的元素之和为 c 。
2、约束函数
if (sum + temp[t] <= c)
sum 是当前没有加上遍历到的那个值的总和,temp 数组是遍历的,c 是所要求的最优解(就是最大和)。
如果大于该数,则舍去那个结点。
三、本章遇到的问题和结对编程的情况
1、遇到的问题
大概是上机实践的时候,对着第一题0-1背包一直在死磕,然后因为想不出怎样更好得约束函数,一直超时卡着,导致一道题没打出来。就是觉得回溯法对于约束函数怎样去严格剪枝挺有难度地,需要好好学。
2、结对编程的情况
两人一学期的编程思想交流,学到了挺多,毕竟不同人思维不同。然后大作业的配合也不错,有伙伴帮忙的感觉很棒,就辉彼此找出对方不足并改正,共同进步