求一个C语言回溯算法的例子

来源:百度知道 编辑:UC知道 时间:2024/06/28 04:23:02
看了回溯算法,不是很明白,希望高手能给出个例子,越简单越好,我学语言不久,大家帮帮我吧~~!!~~~~!!~~~

其实回溯是递归的一部分,如果你了解递归那回溯一看就会
这是递归的经典——汉诺塔
有很详细的解释
http://blog.163.com/long_zhou_cool/blog/static/4047840420086315177703/edit/

如果相当的明白汉诺塔就略过
至于回溯的例子一个比较经典的就是“走迷宫”的例子了,不过实现比较复杂,
给你推荐个简单的例子“拿子游戏”!
http://blog.163.com/long_zhou_cool/blog/static/40478404200863143137239/edit/
解释很详细哦!

最经典的回溯算法

八皇后问题

八皇后问题是一个古老而著名的问题,是回溯算法的典型例题。该问题是十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。
高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。现代教学中,把八皇后问题当成一个经典递归算法例题。

算法分析:数组a、b、c分别用来标记冲突,a数组代表列冲突,从a[0]~a[7]代表第0列到第7列,如果某列上已经有皇后,则为1,否则为0;
数组b代表主对角线冲突,为b[i-j+7],即从b[0]~b[14],如果某条主对角线上已经有皇后,则为1,否则为0;
数组c代表从对角线冲突