代码改变世界

第五章作业

2018-12-22 23:36  water_chen  阅读(170)  评论(0编辑  收藏  举报

一。对回溯算法的理解

回溯的实质是在问题的解空间进行深度优先搜索,在深度搜索时,向下搜索结点时若满足约束条件则返回到前一个结点向其另一个子结点进行深度搜索。

 

二。请说明“子集和”问题的解空间结构和约束函数

7-1 子集和问题 

设集合S={x1,x2,…,xn}是一个正整数集合,c是一个正整数,子集和问题判定是否存在S的一个子集S1,使S1中的元素之和为c。试设计一个解子集和问题的回溯法。

 

解空间结构:

 

 

 

约束函数:用sum记录遍历时的中间值,如果sum大于c,则返回结点,取消向下遍历。

 

三。遇到的问题以及结队编程情况

在编写回溯算法时,难度在于约束条件,在编写过程中,容易产生混乱,约束条件不全甚至错误,需要认真冷静梳理才能慢慢将算法完整。

 

结队编程过程中,队友更容易看出代码的问题和漏洞,能帮助及时改正并且理解,使约束条件正确而全面。