自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 图数据结构的两种实现方式

一、 使用矩阵实现图结构 使用一个数组放置搜有顶点; 使用一个二维数组放置所有的边, 二维数组的两个下标指示边的两个顶点: #include <stdio.h> #include <stdlib.h> #define MAXVEX 100 #define INFINITY 65535 typedef char VertexType; typedef int EdgeType; typedef struct MGraph { VertexType vexes[MAXVEX];

2020-07-04 22:58:24 689

原创 不相交集(并查集)

不相交集是解决等价问题的一种有效的数据结构。 一、等价关系 等价关系定义如下: 1) 自反性:对于所有的a属于集合S, a与a有关系; 2) 对称性:如果a与b 有关系, 则b与a 有关系; 3) 传递性:如果a有b 有关系, b与c有关系, 则a 与 c 有关系; 在不想交集类中, 所有具有等价关系的类都在一个集合中,称为等价类; 不同的集合之间不存在等价关系; 为确定a 和 b是否具有关系, 我们只需要确定a 和 b 是否属于同一个等价类中; 一开始, 输入数据是N个数据, 每一个数据就是一个等价类(每

2020-07-04 18:37:16 1622

原创 随机函数生成器(rand5()与rand7()的转化)

一、C语言中随机函数rand() 和 srand() 1) rand函数和srand函数介绍 随机函数rand() 会随机生成一个位于0-RAND_MAX之间的整数; #include <stdio.h> #include <stdlib.h> int main() { for (int i = 0; i < 10; i++) printf("%d ", rand()); printf("\n"); return 0; } 使用rand()函数的缺点是, 对于同

2020-07-03 15:30:35 906

原创 使用malloc在堆上动态申请二维数组的三种方法

一、利用二级指针申请一个二维数组 每一行的地址都是连续的,但是行与行之间的地址不连续,所有行的首地址都存放在一级指针上; int main() { int m = 4, n = 3; int** arr = (int**)malloc(sizeof(int*) * m); for (int i = 0; i < m; i++) arr[i] = (int*)malloc(sizeof(int) * n); for (int i = 0; i < m; i++) free(arr

2020-07-03 09:31:24 545

原创 回溯算法(收费公路重建问题)

一、问题描述 给出一个距离的集合D, 求出在x轴,存在哪些点能够组合成这样的距离集合; 假设第一个点在0处:path[1] = 0; 最后一个点是距离集合中最大的距离:path[N] = max(D); 使用堆或是红黑树存放距离集合D; 二、具体的代码如下 #include <iostream> #include <vector> #include <set> using namespace std; bool place(vector<int>&

2020-07-02 15:13:31 692

原创 回溯算法(井字游戏)

一、问题描述 三连棋双方都是智力卓越的话,很容易完成平局;在人机对战情况下, 计算机的策略是保证自己不输,并等待玩家失误的机会,当玩家失误时候, 计算机抓住这个失误并取得胜利; ** 极大极小策略** 使用一个求值函数来对一个位置的好坏量化;能使得计算机获胜的位置,其值+1; 平局为0; 计算机输的-1;通过考察盘面能够确定这局棋输赢的位置叫做终端位置(终端位置:有时候只下到一半,计算机发现玩家失误了,计算机一定能赢了,不用等到完全落完棋子); 终端位置是使用immediateHumanWin函数或是imm

2020-07-01 17:26:36 907

原创 回溯算法(八皇后问题)

一、回溯法介绍 回溯算法相当于穷举搜索的巧妙实现,穷举算法是每一种可能都去尝试, 回溯法会在尝试的过程中做出判断,当发现一些不符合标准的组合方案,直接跳过不去尝试。因此, 回溯算法能节省时间代价; 回溯算法实质上还是暴力算法,但是回溯算法并不直接尝试所有的可能,会删除不可能的方案; 在一步内删除一大组可能性的做法叫做裁剪; 在尝试解决问题时候, 每进行一步, 都是抱着试试看的态度;如果发现当前选择并不是最好的,或者这样继续下去可定达不到目标时候, 就放弃本次操作,返回上一层操作,重新做选择; (走不通就回退

2020-07-01 00:46:04 387

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除