子集和问题之回溯法

回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。用回溯算法解决问题的一般步骤为:

1、定义一个解空间,它包含问题的解。

2、利用适于搜索的方法组织解空间。

3、利用深度优先法搜索解空间。

4、利用限界函数避免移动到不可能产生解的子空间。

问题的解空间通常是在搜索问题的解的过程中动态产生的,这是回溯算法的一个重要特性。

下面来看具体代码实现:

#include 

#include 

int flag,sum=0;

int *s, *x, n,c;



void Backtrack(int t)

{

int i;

if(t==n)

{

if(sum==c)

{

flag=1;

for(i=0;i

 

你可能感兴趣的:(计算机算法)