摘要: 一.测试代码 冒泡排序 //冒泡排序从小到大递增class Bubble { int[] arr={9,8,7,6,5,4,3,2,1,1}; public void swap(int arr[],int a,int b){ int ... 阅读全文
posted @ 2020-02-26 21:01 心碎人俱乐部 阅读(93) 评论(0) 推荐(0)
摘要: 注意,旅行商问题一般有一个默认的起点. 一.问题分析 1.状态结点的数据类型: int cl; 表示已走的路程 int id; 表示当前准备判断的结点序号 int x[N]; 表示一个最佳策略 2.约束条件:下一个结点... 阅读全文
posted @ 2020-02-25 22:34 心碎人俱乐部 阅读(310) 评论(0) 推荐(0)
摘要: 一.问题分析 利用优先队列,以结点的价值上界作为优先值.这里要用到的头文件:的容器priority_queue. 它的特点是会在内部按特征值自动排序 当优先队列的数据结构是struct时写法如下 struct PState{ .... //成员函... 阅读全文
posted @ 2020-02-21 23:12 心碎人俱乐部 阅读(253) 评论(0) 推荐(0)
摘要: 红色代表错误或者特别注意 蓝色代表修复后的正确代码 黄色表示变量 一.问题分析 1.问题的性质 回溯法是对树的深度遍历,需要用到递归. 分支限界法是对树的广度遍历,需要用到数据结构.而且每个状态都是一个数据结构实体 状态应该表示如下几个属性: int cp... 阅读全文
posted @ 2020-02-19 15:40 心碎人俱乐部 阅读(316) 评论(0) 推荐(0)
摘要: 一.问题分析 1.问题描述:一个联通无向图中,求最短路径回路.也就是求出一个最佳序列,并且终点和起点有直接路径. 2.问题分析: ① 约束条件:因为存在着两个结点不直接相连的情况,有些序列一开始就不可能出现.约束函数存在 记录连接情况的二维数组 ... 阅读全文
posted @ 2020-02-17 17:54 心碎人俱乐部 阅读(207) 评论(0) 推荐(0)
摘要: 一.问题分析 1.问题描述: 有n个机器零件,每个零件必须先由机器A处理,再由机器B处理。零件Pi需要机器1,2处理时间为P[i].Atime,P[i].Btime 如何安排零件加工顺序,使第一个零件从机器1上加工开始到最后一个零件在机器2上加工完成,所需的总... 阅读全文
posted @ 2020-02-15 22:01 心碎人俱乐部 阅读(79) 评论(0) 推荐(0)
摘要: 一.问题分析 N×N的棋盘上有N个皇后,皇后的攻击范围是同一行,同一列和对角线. N个皇后要如何安全排列? 在一个二维数组中,一行一行地看,观察第 i 行的第 i 个皇后能放在第几列.也就是说,默认每个皇后不可能出现在同一行. ↑显约束. 所以,在判断第t个皇... 阅读全文
posted @ 2020-02-14 20:12 心碎人俱乐部 阅读(23) 评论(0) 推荐(0)
摘要: 一.问题分析 地图着色问题是01背包问题的推广,可以抽象看作无向连通图 由0/1两种状态变成了{1,2,3....N} 这N种状态,逻辑结构也从二叉树->N叉树. 这时就不能像之前那样:左子树写一段代码,右子树写一段代码. 用for()遍历每一个状态并递归... 阅读全文
posted @ 2020-02-14 19:57 心碎人俱乐部 阅读(215) 评论(0) 推荐(0)
摘要: 一.问题描述 在若干点和若干连线中,找到完全子图,即子图中各个点都和其他点相连 二.代码实现 代码有4部分 1.定义全局变量 2.约束函数(限制生成左子树的函数) 3.递归函数 4.调用递归函数的函数,也可以直接写在main() 1.定义全局变量 co... 阅读全文
posted @ 2020-02-14 17:18 心碎人俱乐部 阅读(33) 评论(0) 推荐(0)
摘要: 零.前言 1.确立解空间 回溯法需要用到树的概念 . 这个树就是问题的解空间{x1,x2,x3....xn}. 其中,左右连线表示做出了某个选择;每个结点表示做出选择后的一个状态; 每一层代表一个数组元素 2.搜索解空间 ①约束条件:满足某个条件才能... 阅读全文
posted @ 2020-02-13 22:01 心碎人俱乐部 阅读(123) 评论(0) 推荐(0)