递归法执行回溯.cpp

来自「算法分析中」· C++ 代码 · 共 27 行

CPP
27
字号
void Backtrack(int t)
//t表示递归深度
{
	if(t>n)
	//n用来控制递归深度,即解空间树的高度
	//t>n表示已经搜索到一个叶结点。此时由函数Output(x)
	//对得到的可行解x进行记录或输出处理。
	{
		Output(x);
	}
	else
	{
		for(int i=f(n,t);i<=g(n,t);i++)
		/*
		f(n,t),g(n,t)分别表示在当前扩展结点处未搜索过的子树的其始编号和终止编号
		h(i)表示在当前扩展结点处x[t]的第i个可选值
		函数Constraint(t)和Bound(t)表示在当前扩展结点处的约束函数和限界函数
		*/
		{
			x[t]=h(i);
			if(Constraint(t)&&Bound(t))
			{
				Backtrack(t+1);
			}
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?