主题:诚心求教,望各位相助。
诚心求教几个回溯算法的C语言程序:
▼子集和问题:对于集合S={1,2 ,6,8},求子集,要求该子集的元素之和d=9。
1) 画出子集和问题的解空间树;
2) 该树运用回溯算法,写出依回溯算法遍历节点的顺序表;
3) 如果S中有n个元素,指定d,用回溯算法实现求解子集和问题。
▼[机器设计] 某机器由 n 个部件组成,每一个部件可从三个投资者那里获得。 令 wij 是从投资者j 那里得到的部件 i 的重量, cij 为该部件的耗费。编写一个回溯算法,找出耗费不超出 C 的机器构成方案,使其重量最少。算法的复杂性是什么?
▼在书架上放有编号为1,2,....n的n本书。现将n本书全部取下然后再放回去,当放回去时要求每本书都不能放在原来的位置上。例如:n=3时:
原来位置为:123
放回去时只能为:312或231这两种
问题:求当n=5、8、10时满足以上条件的放法各有多少种?(请列出每种放法)
测试数据:
输入 1 2 3 4 5 6 7 8 9 10 11 12
输出 0 1 2 9 44 265 1854 14833 133496 1334961 14684570 176214841
▼子集和问题:对于集合S={1,2 ,6,8},求子集,要求该子集的元素之和d=9。
1) 画出子集和问题的解空间树;
2) 该树运用回溯算法,写出依回溯算法遍历节点的顺序表;
3) 如果S中有n个元素,指定d,用回溯算法实现求解子集和问题。
▼[机器设计] 某机器由 n 个部件组成,每一个部件可从三个投资者那里获得。 令 wij 是从投资者j 那里得到的部件 i 的重量, cij 为该部件的耗费。编写一个回溯算法,找出耗费不超出 C 的机器构成方案,使其重量最少。算法的复杂性是什么?
▼在书架上放有编号为1,2,....n的n本书。现将n本书全部取下然后再放回去,当放回去时要求每本书都不能放在原来的位置上。例如:n=3时:
原来位置为:123
放回去时只能为:312或231这两种
问题:求当n=5、8、10时满足以上条件的放法各有多少种?(请列出每种放法)
测试数据:
输入 1 2 3 4 5 6 7 8 9 10 11 12
输出 0 1 2 9 44 265 1854 14833 133496 1334961 14684570 176214841