1、你对回溯算法的理解

我认为回溯算法就是穷举法+剪枝函数

 

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

该问题的解空间结构和背包问题相似,也是通过二叉树来选择是否放入。

约束函数:

if(cn+a[i]<=c&&cn+rest>=c)  // 要放入的数字与已有的数字之和不能超过

目标数字并且剩下的数字与已有数字之和需要大于等于目标数字

if(cn+rest-a[i]>=c) // 即使放弃当前数字,剩下数字与已有数字之和应该

要超过目标数字,否则没有进行下去的必要

 

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

刚开始我就是按照背包问题那样去做的,然后在检查的时候脑袋一抽,觉

得数组内容可以是负数,然后改了很多程序。上交的时候发现很多答案错

误,才发现题目说了都是正整数。然后就是另一个数组空间大小的问题,当

我改完后把代码上交但是最后两个总是答案错误,找了好久都找不出问题。最

后在同伴的帮助下,我们发现设的全局变量的数组的空间设小了...当我们把空

间改为10000时,代码就过了...总之结队编程总能集思广益,一个人想不出来、

想不明白的问题,两个人就能很快地解决了。