随笔分类 -  算法分析与设计

摘要:1. 定义 数组a = [1,2,3,4,5],我们维护一个由前缀的和组成的数组sum,sum[i]表示数组中a[0]~ a[i] 的和。 sum[0] = a[0]sum[1] = a[0] + a[1]sum[2] = a[0] + a[1] + a[2]sum[3] = a[0] + a[1] 阅读全文
posted @ 2023-05-03 10:52 Jocelynn 阅读(29) 评论(0) 推荐(0) 编辑
摘要:struct node { int l,r; bool operator <(const node &a)const{ return r < a.r; } }a[maxn]; 使用sort时,如果这么定义节点,说明节点要按照从小到大排序(sort中默认从小到大排序);但是同样的代码,如果使用优先队列 阅读全文
posted @ 2023-05-01 22:31 Jocelynn 阅读(106) 评论(0) 推荐(0) 编辑
摘要:#include<iostream> using namespace std; int a[100][100], sum = 0, minn = 2147483647, i, j, n; int b[100]; void dfs(int dep) { int r; for (r = 1; r <= 阅读全文
posted @ 2023-05-01 22:00 Jocelynn 阅读(66) 评论(0) 推荐(0) 编辑
摘要:#include <iostream> using namespace std; #define MAX 21 int arr[MAX]; //arr[i]=k,表示在第i行的第k个位置放置一个皇后 int sum;//计数解的个数 int n;//记录几行几列 bool cmp(int row, 阅读全文
posted @ 2023-05-01 21:59 Jocelynn 阅读(27) 评论(0) 推荐(0) 编辑
摘要:#include <iostream> using namespace std; struct thing { int weight;//物品重量 int value;//物品价值 int number;//物品数量 }; thing things[10];//假设最多有10个物品 int thin 阅读全文
posted @ 2023-05-01 21:58 Jocelynn 阅读(102) 评论(0) 推荐(0) 编辑
摘要:#include<iostream> using namespace std; int G[50][50]; //保存无向图 int color[50]; //存放每个点的颜色 int sum = 0; //需要的颜色总数 int mins = 999999; //需要的最少的颜色数 int N; 阅读全文
posted @ 2023-05-01 21:57 Jocelynn 阅读(117) 评论(0) 推荐(0) 编辑
摘要:#include <iostream> using namespace std; struct thing { int weight;//物品重量 int value;//物品价值 int number;//物品序号 }; thing things[10];//假设最多有10个物品 int thin 阅读全文
posted @ 2023-05-01 21:53 Jocelynn 阅读(132) 评论(0) 推荐(0) 编辑
摘要:#include <iostream> #define INF 9999 //表示无穷大 #define MAXVEX 10 //假设顶点最多不超过10个 using namespace std; struct MGraph { int vertex[MAXVEX];//顶点集 int arc[MA 阅读全文
posted @ 2023-05-01 21:52 Jocelynn 阅读(127) 评论(0) 推荐(0) 编辑
摘要:#include<iostream> #include<queue> #define INF 1e7 #define MAX 100 using namespace std; int m[MAX][MAX]; //存储城市间的代价 int bestPath[MAX]; //存储最优路径 int be 阅读全文
posted @ 2023-05-01 21:40 Jocelynn 阅读(449) 评论(0) 推荐(0) 编辑
摘要:#include <iostream> using namespace std; #define MAX 100 struct Node { int isVisit;//记录节点是否被扩展 double w; double v; int level; //记录节点所在的层次 double ub; / 阅读全文
posted @ 2023-05-01 21:38 Jocelynn 阅读(130) 评论(0) 推荐(0) 编辑
摘要:在阅读使用分支限界法解决TSP问题时遇到了这样一段代码: //排列树的节点定义 struct node { int cl;//当前走过的路径长度 int id;//处理的第几个城市 int x[100];//记录当前路径,下标从1开始 node() {}//默认构造函数,不提供任何参数,即通常的结构 阅读全文
posted @ 2023-04-27 08:42 Jocelynn 阅读(47) 评论(0) 推荐(0) 编辑
摘要:1. 堆的定义: 在一颗完全二叉树中,每一个根节点的值均大于(或小于)其左右子树根节点的值,被称为堆。堆分为两种类型:大根堆和小根堆。 其中每一棵子树的根节点的值大于等于左右子树节点的值,被称大根堆。如果是每个节点的值均小于等于左右节点的值,被称为小根堆。 2. 堆排序的过程: 首先,将需要排序的数 阅读全文
posted @ 2023-04-21 20:19 Jocelynn 阅读(30) 评论(0) 推荐(0) 编辑
摘要:1. 确定问题的目标函数和约束条件,将问题转化为求最大或求最小值。 2. 定义一个优先队列,用于存储候选解及其对应的目标函数值。 3. 初始化队列,将初始解加入队列,同时设定初始界限 4. 对队列中结点进行扩展,并求生成的子节点对应的目标函数值。如果所求子节点的目标函数值超出设定的界限,就将该节点剪 阅读全文
posted @ 2023-04-21 16:41 Jocelynn 阅读(130) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示