
回溯法
文章平均质量分 72
a_1_2_ab
这个作者很懒,什么都没留下…
展开
-
背包问题
设有N个物体和一个背包,物体i的重量wi,价值为pi,背包的载重量为M,若将物体i放入背包中,只有价值pi,求找打一个方案使得放入背包中的总价值L最高。eg.w=(20,15,15) p=(40,25,25) M=30则L=50#includestruct { int weight; int value;} goods[10];//存储每个物体的信息原创 2011-06-21 22:03:00 · 736 阅读 · 0 评论 -
求最短过桥时间问题
题目:在漆黑的夜里,四位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,四个人一共只带了一只手电筒,而桥窄得只够让两个人同时通过。如果各自单独过桥的话,四人所需要的时间分别是1,2,5,8分钟;而如果两人同时过桥,所需要的时间就是走得比较慢的那个人单独行动时所需的时间。问题是,你如何设计一个方案,让用的时间最少。结果:首先让1、2分钟的一起过,原创 2011-06-21 21:35:00 · 2019 阅读 · 0 评论 -
求图的强连通分量
深度优先遍历是求图的强连通分量的一个有效方法。其思路大概如下:1)在有向图上,以某一顶点进行深度优先遍历,并按其所有邻接顶点都完成(退出DFL函数)顺序将顶点排列起来。即在结束函数之前,用数组存储该顶点2)将图转置,从数组最后一顶点开始,再次进行深度优先收索。每退出函数,原创 2011-08-12 10:17:47 · 919 阅读 · 0 评论 -
递归实现全排列和组合
用递归实现的全排列,算是一个简单的算法,已经测试通过。其中还考虑了有重复数字的情况,如1,1,3,没有写终端输入,测试时可直接改程序#include #include #define N 3void swap(int,int);//交换2个数void pailie(int);//递归实现算法int a[N]={1,2,3};int main(void)原创 2011-07-02 14:29:55 · 894 阅读 · 0 评论 -
火车进站
给定一个正整数N代表火车数量,0输入:有多组测试用例,每一组第一行输入一个正整数N(0 输出:以字典序排序的火车出站序列号,每个编号以空格隔开,每个输出序列换行。解析:该问题可以提炼成为给出进栈序列,求出所有的出栈顺序。该题是一道模拟题,模拟进栈出栈的顺序。对于每一个元素进栈后 都可以有2种行为:出栈或者驻留在栈中。整个过程可以用一个树的形式来表达。因此采用回朔法(回溯法的过程原创 2015-01-21 10:16:58 · 1992 阅读 · 1 评论