![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
DBBH
成都有合适webgl/webgpu岗位的请私信我
展开
-
一个寻路过程图解
https://www.cnblogs.com/pointer-smq/p/11332897.html三角化地形之后的一个操作,看着很是NICE忍不住转发了转载 2021-10-18 14:48:48 · 86 阅读 · 0 评论 -
js计算数学表达式
threejs交流群511163089这两天做计算数学表达式,这个就要用到后缀表达式来做,这是数据结构课会教的东西,发现规律的大神真牛批咱们就看看js怎么做这种东西,普通算式就是中缀表达式。规则如果遇到左括号则直接入栈如果遇到右括号,则弹出站内只到出现左括号为止如果站外操作符的优先级高于站内的优先级则入栈如果栈外的操作符优先级低于或等于栈内的优先级,输出栈内的符号,并入栈栈外的符号中缀表达式遍历完成,但是栈中还有符号存在,一一出栈输出输出就是装进后缀表达式栈这样出来的原创 2020-10-27 14:22:24 · 1795 阅读 · 0 评论 -
立FLAG 开始学习球谐光照以及利用这个东西的思路拓展一下
之前预习了解到一点球谐光照这种预处理来做好看的效果的实现方式,有时间了好好理解理解。立FLAG,一定要学这个。原创 2020-09-07 18:28:01 · 145 阅读 · 0 评论 -
基础知识八叉树射线检测
构建之后,ray会检测子树,击中,则检测是否有物件,如果有物件,就先相交测试。击中或者没击中都继续进去当前子树存在的子树。这样就把击中的所有物件收集起来,按距离排序。这样检测就比遍历所有物体快了很多很多。...原创 2020-08-18 10:18:40 · 521 阅读 · 0 评论 -
基础知识八叉树构建
都是伪代码哈tree{ boundingbox leftfowardup//children1 ...7 chilren maxDeep}一个深度限制,一个包围盒,8个孩子那么需要构建,那就插入物体 物体包围盒是boxnode_level_0检查,是否包围盒大于box,0层级特殊处理,0的包围盒小于box就直接加入0级,return了。继续正常情况,物体包围盒小于0级包围盒。那么就Try一下八个子树,那么分情况。1 如果子树包围盒小于原创 2020-08-17 17:31:14 · 1141 阅读 · 0 评论 -
图形学数据结构 half-edge
这个东西,看了之后 只有一个感觉WC你看了之后,很可能会感觉俺也一样这是https://www.flipcode.com/archives/The_Half-Edge_Data_Structure.shtml介绍是用来精细化网格和简化网格用得上的不同的拓扑形状你还要考虑一下是否好使看看人家的点 装的是起点是vert的边和起点xyz人家的边 装的是终点vert然后边...原创 2019-12-16 17:03:30 · 549 阅读 · 1 评论 -
归并排序
先一直拆分。拆成很小的段 再拼回来 拼的时候顺便把序排了#include using namespace std;int a[5] = { 25, 2, 33343, 5, 1 };void merge(int *a, int first, int mid, int last){ int *b = new int[last - first+1]; int k = 0; int a原创 2017-02-03 22:11:43 · 199 阅读 · 0 评论 -
图 简单滴C++邻接表 无向图
这个邻接表。。就是一个结构体数组。存放着 顶点信息和下一个点的信息。下一个点存着下一个点的信息。有点像简单的哈希表那样子struct PHead head[i] {char VInfo 这个是每个节点的信息 栗子:A B C三个节点 VInfo 分别是A B C 就存储了头结点信息。我是char的嘛。。node 这个就是每个数组保存的链表的第一个节点}struct Nod原创 2017-02-15 23:09:59 · 696 阅读 · 0 评论 -
快速排序
。把整体分块。排序。void Quick(int*a,int l,int r){int key=a[l];int i=l;int j=r; if(i>=j)return;while(i<j) { while(ikey) j--; if(i<j) a[i++]=a[j]; while(i<j&&a[i]<k原创 2017-02-03 20:03:36 · 193 阅读 · 0 评论 -
BFS输出路径
BFS就像水那个意思 被挡住的就从边上过去。从0 0 到 3 3 他会扩散过去 这个地图。是随便写的。来看完整马H#ifndef H_H#define H_H#include #include #include #include struct Node{ int x; int y; int feet;};class MAZE{public:原创 2017-02-01 13:20:49 · 702 阅读 · 0 评论 -
全排列
全排列栗子123排列为1231322132313213121做为前面 然后 2 3 的全排列 2作为前面 1 3的全排列 3作为前面 1 2 的全排列这就是所有的全排列我们可以一直把每一个数作为第一个,递归求后n-1个数的全排列char ans[4]="123"; char*a="abcd" ; 此时"abcd"存放在常量区原创 2017-01-27 12:51:32 · 214 阅读 · 1 评论 -
学习C++拓扑排序
大概意思就是必须过了A才能到B这种关系。每到一个点 必须有前提条件酱紫思路是找到入度为0的点。加入一个栈或者队列这些容器 然后 挨个找与之相连系的点 。然后由于这个顶点已经被用了 那么被指向这些点的入度就可以-1 然后当有一个度变成0了,就把他加入容器里,接着循环找入度为0的顶点。有点像BFS。这每一个入度为0的顶点。就是拓扑排序出来的顺序了。完整马原创 2017-02-17 12:55:49 · 250 阅读 · 0 评论 -
KMP字符串匹配。。学习。
呃 感觉多亏看了一个歪果仁的视频 10多分钟。。不认识是谁 -v-这个算法时间复杂度O(m+n) 不回溯例如 a c b c a c b -1 0 0 1 0 1 2 这个是Next数组 当你每次匹配失败时候。。这个匹配串的作用 例如 当时是下标是j,匹配失败了, 就要回到Next[j-1]+1 。。你失败那个位置之前一步肯定没失败吧 不然就不匹配到这了,原创 2017-02-09 16:57:04 · 213 阅读 · 0 评论 -
学习C++哈弗曼树
每次找出最小的俩顶点 构建一棵小树 再跟原来的树拼起来。就成了新的树。。直到只剩1个顶点 构建成功#ifndef H_HPP#define H_HPP#include // 栗子 1 2 4 6 每两个顶点 都把权值相加合成一个新顶点 直到剩下一个点 就构建完成这个哈夫曼树了。 // // 13// 6 7//原创 2017-02-17 23:49:55 · 301 阅读 · 0 评论 -
接着学习C++哈夫曼编码
昨天 已经构建了哈弗曼树了。哈夫曼编码 就是从底倒着往前走 如果这点是左子 0右子1 直到根 而且每个编码都不能是别的编码的前缀上完整马 看注释哈#ifndef H_HPP#define H_HPP#include //1 2 4 6 每两个顶点 都把权值相加合成一个新顶点 直到剩下一个点 就构建完成这个哈夫曼树了。 // // 13原创 2017-02-18 11:05:27 · 263 阅读 · 0 评论 -
LCS最长公共子序列S,P
。俩字符串 S 和 P 求最长公共子序列。把他们当成矩阵dp[][]与i j关系dp[0][0]=0if S[i]=P[j] dp[i] [j] =dp[i-1][j-1]+1else dp[i] [j] =MAX(dp[i-1][j], dp[i],j-1])就这么几个。也算记忆的数组。然后dp[m][n]就是最大值这个栗子 asb 长度3完整马#原创 2017-02-09 22:09:06 · 320 阅读 · 0 评论 -
LIS.学习C++ 最长上升序列
给一串数 33 4 2 324 44 55 最长上升的序列是 33 44 55 值为3 序列不唯一 长度是唯一的怎么搞喃 弄一个dp[max]数组 存放到达每个位置时候的最长序列for(int i=1;i for(int j=0;j {if(a[j]dp[i] )dp[i]=dp[j]+1; }酱紫就把整个DP都处理好了。直接输出最大的那个就可以了。来完整马原创 2017-02-19 18:52:37 · 1450 阅读 · 0 评论 -
C++简单哈希表
简单的哈希表。。一个数组。。装着每一个链表的首地址。需要Node**mListmList=new Node*[size]//这里没初始化for(int i=0;i还有一个生成key的函数return (n^0xdeadbeef ) %size下面是完整马 HPP#include using namespace std;templatestruct Hash_Li原创 2017-02-12 11:44:55 · 427 阅读 · 0 评论 -
递归。。爬楼梯
一次走1或者2步 打印出走到给数量n的所有走法例n=31111221递归int q[111];int num=0;int n=4;//n随便写嘛。这测试写的void upstair(int n)//n当前已走的阶梯数量{ if (n == x)//走到终点打印出来这个走法 把后面的清零 { //cout << "n = " << n <<原创 2017-01-23 11:36:57 · 354 阅读 · 0 评论 -
动态规划 DP
数字三角形(POJ1163) 在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或 右下走。只需要求出这个最大和即可,不必给出具体路径。 三角形的行数大于1小于等于100,数字为 0 - 99 输入格式: 5 //表示三角形的行数 接下来输入三角形 7原创 2017-01-25 20:08:22 · 186 阅读 · 0 评论 -
Floyd算法 有向图。
Floyd算法求所有点之间的最短路 可以有负权值 时间复杂度O(n^3)用的是邻接矩阵从 i 到 j 两个点之间。。假设最短路径是 D i j 如果从i到中间任意点k D i k +D k j这个距离小于了假设的这个D ij 那就把Di j 替换为D i k+D k j用三个for第一个 每一个点都要把所有点当做一次k点 进行刚刚说的比较第二个 代表 i 开始的点第原创 2017-02-16 16:14:10 · 1942 阅读 · 0 评论