算法
duxinglishi
这个作者很懒,什么都没留下…
展开
-
ids工业相机与电控位移台同步控制及数据采集
如果有更多需求,欢迎大家私信交流。原创 2024-04-04 16:42:10 · 860 阅读 · 0 评论 -
算法之最短路径问题
最短路径之医院选址问题某大队有5个村庄ABCDE,村庄之间道路情况如图所示:现在要在其中一个村庄选为医院建造地址,目的是从其他村庄到该村庄来回路径最短。问医院应该建在哪个村庄?本文通过邻接矩阵的有向图模型解决该问题:C语言代码:#include<iostream>using namespace std;#define N 5const int M = 1000; //用一个非常大的数表示无穷大char vertex[N] = {'A', 'B',原创 2021-05-23 16:22:19 · 1705 阅读 · 0 评论 -
图的存储结构及实现
图的存储结构及实现邻接矩阵无向图邻接表的存储结构定义邻接矩阵图的邻接矩阵(adjacency matrix)存储也被称为数组表示法,是一个用一维数组存储图中顶点、二维数组存储图中的边(即各顶点之间的邻接关系),存储邻接关系的二维数组被称为邻接矩阵。邻接矩阵又可以分为两种情况:无向图和有向图。无向图对于无向图,顶点i的度等于邻接矩阵中第i行或第i列非零元素的个数判断顶点i和j之间是否存在边,只需要测试邻接矩阵中相应位置的元素edge[i][j],判断取值是否为1找到顶点i的所有邻接点,可依次判别原创 2021-05-23 12:54:28 · 222 阅读 · 0 评论 -
C语言实现二叉树(链式存储结构)+ 遍历
C语言实现链式存储结构二叉树遍历结构体定义及三种遍历方法结构体定义先序遍历先序遍历的递归实现先序遍历的非递归实现中序遍历中序遍历的递归实现中序遍历的非递归实现后续遍历后序遍历的递归实现二叉树的递归建立二叉树的递归销毁主函数结构体定义及三种遍历方法结构体定义#define MaxSize 100//二叉树节点结构体定义typedef char DataType;typedef struct BiNode { DataType data; struct BiNode* lChild;原创 2021-04-26 14:25:15 · 3120 阅读 · 3 评论 -
八皇后问题(回溯法)C语言求解
方法一://N_Queen#include<iostream>using namespace std;#define N 100 //定义最多求解100皇后问题int x[N]; //存放N皇后问题的解//判断皇后K放在x[k]列是否冲突int Place(int k) { for(int i = 0; i < k; i++) { if(x[i] == x[k] || abs(i - k) == abs(x[i] - x原创 2021-04-12 16:44:32 · 516 阅读 · 0 评论 -
C语言实现随机发纸牌
C语言实现随机发纸牌为避免重复发牌,设二维数组sign[4][13]记载是否发过纸牌,其中行下表表示花色,列下标表示点数。设字符串指针数组card[n]存储随机发的n张纸牌,例如card[0] = “梅花2”, 按照以下方法以此发出每一张牌:首先产生一个0~3的随机数i表示花色, 然后在产生一个0~12的随机数j表示点数,如果这张牌尚未发出,则将sign[i][j]置1,并将这张牌存储到card[n]中。C语言代码描述为://发纸牌#include<iostream>#include&l原创 2021-04-12 12:18:09 · 4508 阅读 · 6 评论 -
有序数组中插入元素依然保持有序
有序数组中插入元素依然保持有序如何在一个有序数组中插入元素,使得数组依然保持有序,废话不多说直接上代码(C/C++)如何在一个有序数组中插入元素,使得数组依然保持有序,废话不多说直接上代码(C/C++)//在有序表中插入元素,插入后数组依然有序#include<iostream>using namespace std;int main() { int a[11] = {1,2,3,4,5,6,7,8,9,10}; int insert = 0; scanf("%原创 2021-03-28 16:22:35 · 3513 阅读 · 2 评论 -
逆波兰式数学表达式求解
逆波兰式数学表达式求解//输入逆波兰式表达式#include<iostream>#include<string.h>using namespace std;//函数表达式比较str1和str2优先级:return 1表示str1优先级高;return 0表示优先级相等;return -1表示str2优先级高int Compare(char str1, char str2) { switch (str1) { case '+': c原创 2021-03-19 13:41:39 · 208 阅读 · 0 评论 -
C语言数组实现括号匹配
C语言数组实现括号匹配废话不多说,直接上代码#include<iostream>using namespace std;int Match(char *str) { char s[100]; //定义顺序栈,假定最长有效字符为100 int top = -1; //初值指针-1 for(int i = 0; str[i] != '\0'; i++) {原创 2021-03-19 12:46:02 · 1196 阅读 · 0 评论 -
栈的顺序存储结构、链式存储架构及其实现
顺序存储结构及C语言实现#include<iostream>using namespace std;#define StackSize 100//定义数据类型typedef int DataType;//定义结构体typedef struct { DataType data[StackSize]; int top;}SeqStack;//初始化栈void InitStack(SeqStack *S) { S->top = -1;原创 2021-03-10 21:24:19 · 350 阅读 · 0 评论 -
C语言手写线性表(顺序存储结构、链式存储结构)
C语言手写线性表 顺序存储结构、链式存储结构C语言手写线性表(顺序存储结构、链式存储结构)顺序存储结构(通过数组实现)链式存储结构(结构体实现)C语言手写线性表(顺序存储结构、链式存储结构)顺序存储结构(通过数组实现)#include<iostream>using namespace std;#define MaxSize 100typedef int DataType;typedef struct { DataType data[MaxSize]; int l原创 2021-03-04 16:59:50 · 261 阅读 · 2 评论 -
数组循环左移问题
数组循环左移问题的三种解法问题/题干 描述解法1解法2解法3问题/题干 描述将一个具有n个元素的数组向左循环移动i个位置。这只一个很实用的问题,很多应用程序会调用这个问题的算法,例如在文本编辑器中移动行的操作,磁盘整理时交换两个不同大小的相邻内存块等。所有解决这个问题的算法要求有较高的时间性能和空间性能。解法1先将数组前i个元素存放于另一个临时数组,再将余下的n-i个元素左移i个位置,最后将前i个元素从临时数组复制会原数组后面i个位置。总共需要移动i+(n-i)+i=i+n次数组元素,使用了i个原创 2021-02-27 22:05:46 · 3031 阅读 · 1 评论 -
C语言求解七桥问题
哥尼斯堡七桥问题介绍哥尼斯堡七桥问题(简称“七桥问题”)。17世纪东普鲁士有一座哥尼斯堡城(现叫做加里宁格勒,位于波罗的海南岸),城中有一座岛,普鲁格尔河的两条支流环绕其旁,并将整个城市划分为北区、东区、南区和岛区4个区域。共有7座桥将4个区域连接起来,如下图所示。产生一个有趣的问题:一个人能否在一次步行中将7座桥全部走完然后回到出发点,且每座桥只允许经过一次。解题思路抽象数据模型,将城区抽象为顶点,用A,B,C,D表示,桥抽象为边,7条边表示7座桥,从而将七桥问题抽象为数学问题:求经过图中每一条边原创 2021-02-23 22:06:44 · 3515 阅读 · 0 评论 -
C语言手写自定义三维数组
C语言手写三维数组本文目的是通过C语言的结构体和动态数组,实现自定义类型的三维数组TripleArray及其基本运算本文目的是通过C语言的结构体和动态数组,实现自定义类型的三维数组TripleArray及其基本运算// An highlighted block//通过C语言中的结构体和动态数组,实现三维整形数组类型TripleArray及其运算#include<iostream>using namespace std;typedef struct triplearray{ i原创 2021-01-27 21:02:08 · 1852 阅读 · 0 评论 -
C语言手写栈、手写计算器
C语言实现表达式求值文章结构C语言手写栈Struct Stack后缀表达式求值中缀表达式转后缀表达式文章结构本文尝试通过纯C语言写一个计算器,在Visual Studio和VScode运行都可以通过,大家可以下载到自己的编译器试一下。其中主要涉及的知识点是C语言手写栈,中缀表达式与后缀表达式的转换等。C语言手写栈Struct Stackstack.h本文通过顺序结构写出栈的结构体,并实现了相应的入栈、出栈、初始化等操作// An highlighted block#include<std原创 2021-01-11 14:09:10 · 572 阅读 · 0 评论 -
常见编译器路径配置
常见编译器路径配置第一篇博客想给大家说一下笔者在配置了多个软件库后总结出来的经验:大多数编译器(例如C/C++,nodejs,OpenCV,anaconda)等软件,因为或多或少都有C语言的基础在里面,然后路径一般都是以字符串的形式导入代码的,在路径设置中‘\’通常作为转义字符存在的,所以‘\’才能表示‘\’的含义。例如:桌面路径C:\Users\Desktop,如果我们在正常的文件资源管理器中复制路径,大多是这种形式,但是如果想在代码中表示路径,一方面需要在外面加上引号,另一方面考虑转义字符的原创 2020-07-15 13:02:26 · 2518 阅读 · 0 评论 -
辗转相除法(欧几里得算法)求解最大公约数、最小公倍数
辗转相除法求解最大公约数、最小公倍数通常来说,求解两个数的最大公约数和最小公倍数是常见的算法问题,我们正常人最先想到的肯定是穷举法,通过while循环或者for循环,不断改变循环数,辗转取余判断是否为0。C++代码如下:// An highlighted block#include<iostream>using namespace std;//求解最大公倍数int gcd1(int a, int b){ int maxfac = b; while (maxfac>=1)原创 2020-08-14 10:47:06 · 361 阅读 · 0 评论