
算法研究
一笑奈何go
一位爱计算机的小伙子
展开
-
常见带障碍迷宫最短路径
#include <iostream>#include <queue>#include <stdlib.h>using namespace std;#define OBJECT -2#define WALL 1typedef struct{ int x,y,preX,preY,val;}Node;int step[50][50];//标...原创 2019-11-28 23:51:30 · 2453 阅读 · 2 评论 -
Floyd算法简单实现
#include <iostream>#include <string.h>#include <stdlib.h>#include <iomanip>using namespace std;//floyd实现 int** floyd(int **matrix, int n){ for(int k = 0;k < n;k++...原创 2019-11-26 22:58:37 · 335 阅读 · 0 评论 -
探寻动态规划
在我的理解中,动态规划核心要点是如何拆分问题,即对问题状态的定义和状态方程的定义。动态规划应该在考虑全局的情况下,根据状态转移方程求解当前状态的最优解,从而最终得出结果。它有“最优子结构”和“后效性”的特点。它适用于每个阶段的最优状态可以从之前某个阶段的某个或某些状态直接得到(最优子结构)而不管之前这个状态是如何得到的(后效性)。原创 2017-12-25 01:57:06 · 375 阅读 · 1 评论 -
KMP算法详解
在网络上看了很多优秀的博客和百科,KMP算法往往比较难理解。它是一种字符串匹配非常高效的算法,时间复杂度由O(n*m)变为O(n+m)。接下来我尝试着用简单的语言描述我对KMP算法的理解以及next和nextval的求法。首先先来介绍一下next,next其实是一个数组,用来存储对应位置子串需要后移的位数。例如 abdadabd,在这个子串中需要去计算它的每一位的next值。原创 2017-12-29 15:24:02 · 563 阅读 · 1 评论 -
2.2王晓东数据结构—用数组实现顺序表
#include <iostream>#include <cstdlib>using namespace std;/*The implement of list by array.Aha, I only want to pratice my English, my English is poor.author:Jiawei Wu*/typedef str...原创 2019-04-23 23:22:09 · 558 阅读 · 0 评论 -
前缀、中缀、后缀互相转换
以中缀式子5+10*(2+6)-8 作为例子导向。中缀->前缀首先构造一个运算符栈,然后从右至左扫描中缀表达式。如果是操作数,则直接输出;如果是运算符,则比较优先级:若该运算符优先级大于等于栈顶元素,则将该运算符入栈,否则栈顶元素出栈并输出,直到该运算符大于等于栈顶元素的优先级时,再将该运算符压入栈中。遇到右括号直接压入栈中,如果遇到一个左括号,那么就将栈顶元素弹出并输出,直到右括号...原创 2019-08-03 21:41:46 · 3115 阅读 · 3 评论 -
用游标实现表(静态链表)
#include <iostream>#include <stdlib.h>using namespace std;//element of arraytypedef int ListItem;typedef struct snode *link;typedef struct snode { ListItem element; int next...原创 2019-08-01 18:31:13 · 773 阅读 · 2 评论 -
排序代码合集
排序代码合集(冒泡排序、插入排序、选择排序、快速排序、计数排序、)#include <iostream>using namespace std;/*bubble sortparam: @seq: A array that will be sorted. @l: begin index include itself. @r: end index expect it...原创 2019-07-28 20:36:56 · 188 阅读 · 0 评论