笔记
非一柴
这个作者很懒,什么都没留下…
展开
-
Omniverse Extension根据维度经度时间改变场景中光照的位置
Omniverse 光照角度扩展原创 2022-09-21 15:44:23 · 185 阅读 · 0 评论 -
【Python】安装pillow后仍显示 no module named PIL的解决办法
在File>>Setting>>Python Interpreter里点击下三角,切换编译器即可原创 2022-04-07 10:25:08 · 2967 阅读 · 2 评论 -
UE4-HTC VIVE 直接显示设置(无需连接头显的方法)
UE4-HTC VIVE 直接显示设置学习nDisplay连接vive时,之前一直以为要连上头戴式显示设备才能连接tracker或其他设备,在外网的学习视频中了解到可以直接连接Tracker,于是记录下来,以便改回去(有点迷惑??)解决方法找到你电脑中的【C:\Program Files (x86)\Steam\steamapps\common\SteamVR\drivers\null\resources\settings】文件夹,选择default.vrsettings文件,将红框中的参数改为t原创 2021-10-25 19:31:46 · 1753 阅读 · 0 评论 -
单链表——两个递增链表的合并
L1=L1并Bvoid Merge(LinkList &L1,LinkList &L2) { if(!L1->next&&!L2->next) {//两表有一表为空,返回另一表即可 L1=L1->next? L1:L2; return; } LNode *pa=L1,*pb=L2;//两指针分别指向头结点 while(pa->next&&pb->next){ if(pa->next->data.原创 2020-11-27 17:31:10 · 797 阅读 · 0 评论 -
二叉树——右视图
题源:LeetCode问题描述算法思想从右边看到的结点必是每层的最后一个结点,故利用层次遍历,求每层的最后一个结点即可void rightElevation(BiTree T){ if(!T) return null; BiTree Q[MAXSISE],temp[MAXSIZE]; int rear=-1,front=-1,last=0; TNode *p; int i=0; while(rear>front){ Q[++front]=p; if(p->l原创 2020-09-26 18:48:17 · 143 阅读 · 0 评论 -
树——删除所有叶节点
有待指正的算法实现void DeleteLeaf(BiTNode &T){ if(!T) return null; if(T->lchild==null!T->rchild==null) { free(T); return ; } if(T->lchild) Delete(T->lchild); if(T->rchild) Delete(T->rchild);}void DeleteLeaf(BiTNode &T){ if(!T原创 2020-09-25 20:07:36 · 443 阅读 · 1 评论 -
无向图——压缩存储之计算某个结点的度
无向图——压缩存储之计算某个结点的度问题描述有n个结点的无向图,使用邻接存储作为存储结构,为减少存储空间,使用数组按照行主映射的方式仅保存下三角矩阵,请给出映射公式,并编写算法计算给定结点的度。算法思想给定邻接矩阵如图所示,若用数组压缩存储矩阵,且只存储下三角部分,则元素存储的公式如下如图所示:所以元素aij的在数组中的下标为(i-1)(i-2)/2+j-1i-2:一共有i-2项i-1:首项加末项(i-1)(i-2)/2:第i行之前所有行元素的个数j-1:aij第i行列前原创 2020-09-08 19:59:03 · 2206 阅读 · 0 评论 -
二叉树——利用层次序列与中序序列确定一颗树
前言本人在进行数据结构复习时,在遇到此类问题时出现了麻烦,故花了一定的时间进行的复习总结,以下是本人的解题过程,如有错误还望纠正原创 2020-09-05 19:26:53 · 3652 阅读 · 0 评论 -
顺序表——查找主元素
查找主元素王道例题:尽可能高效的算法,找出主元素算法思想因为要求尽可能高效,所以采取以时间换空间的算法,设置一个辅助数组,其容量为序列中的最大值,统计他们的出现次数,符合要求则输出。代码实现#include<stdio.h>#define MAXSIZE 100int main(){ //查找主元素 int a[] ={0,3,3,3,3,7,5,5}; int temp[MAXSIZE]; int max=a[0]; int i;...原创 2020-09-02 19:41:15 · 569 阅读 · 0 评论 -
408真题——划分序列
问题描述 已知由n个正整数构成的集合A,将其划分为两个不想交的子集A1和A2,元素个数分别是n1和n2,A1和A2中的元素之和分别为S1和S2,设计一个尽可能高效的算法,满足|n1-n2|最小且|S1-S2|最大。 算法思想 n2-n1最小即为两子序列各为一半,且一半的所有元素比另外一半的任意元素都要小此处可利用快速排序的思想,当当前的枢轴的最终位置是n/2时,则停止排序,对左右序列的元素进行求和做差即可 算法实现 void partition(int a[],int...原创 2020-08-20 18:58:53 · 1479 阅读 · 0 评论 -
排序
问题描述 设顺序用数组A[]表示,表中元素存储在数组下标1~m+n的范围内,前m个元素递增有序,后n个元素递增有序设计一个算法使得整个顺序表有序 算法分析 从A[]的m处开始与m+i(i=1,2,...n)个元素比较...原创 2020-08-19 21:56:21 · 430 阅读 · 0 评论 -
冒泡排序——两头交替排序
问题描述编写双向冒泡排序算法,在正反两个方向交替进行扫描,即第一趟把关键字最大的元素放在最后面,第二趟把关键字最小的元素放在序列最前面,如此反复下去。算法思想在原有的冒泡排序的基础上进行改造改造处:① 外部循环条件,因为待排序序列经过一轮排序后,下一次排序的起始点与结束点都会发生变化,因此不直接填入递增或递减语句for(i=0,j=L.length-1;i<j;)② 内部循环条件for(k=i+1;k<=j;k++) //最大元素推至最后(j指向的位置为终点位置)fo..原创 2020-08-13 19:28:20 · 1901 阅读 · 0 评论 -
动态规划——好文章链接
https://mp.weixin.qq.com/s?src=11×tamp=1596118686&ver=2492&signature=dGz5lqHkDWSR-sXt3S50Yq8eiUMdqqLCZ0ZQdm9eiQ7nAZMCLWRZtAd5Q487ryJ5gV3cQSZsH-cDjuAIu0RGijxG5vygT3aUSlCQY5CrnEV43aZRokEw5On-SidOVy&new=1转载 2020-07-30 22:23:40 · 147 阅读 · 0 评论 -
Floyd算法——转载
Floyd算法简称F算法由Robert W. Floyd(罗伯特·弗洛伊德)于1962年发表提出的,解决了图中任意节点间的最短路径问题。以下图中的城市的道路为例:上图中有4个城市8条公路,公路上的数字表示这条公路的长短。请注意这些公路是单向的。我们现在需要求任意两个城市之间的最短路程,也就是求任意两个点之间的最短路径。这个问题这也被称为“多源最短路径”问题。现在需要一个数据结构来存储图的信息,我们仍然可以用一个4*4的矩阵(二维数组G)来存储。比如1号城市到2号城市的路程为2,则设G[1][2].转载 2020-07-29 21:59:51 · 501 阅读 · 0 评论 -
单链表——排序之设计在单链表上设计选择简单排序
在链结构上实现简单选择排序简单选择排序思想对链表遍历的第i趟,就找到第i小的元素与第i个位置的元素进行交换,直至n-1趟后全部排序完成设计三个指针,一个指向编号为i的节点,一个指向当前节点值最小的结点,一个进行访问对链表进行遍历,每遍历一次进行元素的交换,直至排序完成void simpleSort(LinkList &L){ if(!L||L->next) return 0; LNode *p=L->next,*q=p->next; LNode *min;原创 2020-07-26 20:20:16 · 1174 阅读 · 12 评论 -
单链表-删除值相同的多余的结点
单链表-删除值相同的多余的结点1.设计一个指针p指向当前结点,作为基准2.设计指针q作为比较结点若q与p值相同,则删除p指向的结点void DeleteCommon(LinkList L){ while(p){ LNode *q=p->next,*s=p; while(q){ if(p->data==q->data){ s->next=q->next; free(q); q=s->next; } else{原创 2020-07-26 20:19:51 · 1319 阅读 · 1 评论 -
表达式树——中序打印输出
给出一个表达式树,输出其中序表达式,需要用括号来区分优先顺序(貌似是408真题,感觉自己递归没有学好,只会用栈实现,也不知道对不对,求大神纠错)如图所给出表达式,输出为(a+(b*(-d)-(e/f))算法分析(一)若当前结点是左子树上的叶子结点,输出左括号以及数据(二)若当前结点是根节点直接输出数据(三)若当前结点有右子树但左子树为空,则输出左括号以及根节点数据(四)若当前结点为右子树上的叶节点,输出右括号以及数据代码实现//非递归中序遍历思想void print(Bi.原创 2020-07-15 20:13:22 · 324 阅读 · 2 评论 -
单链表——反向输出结点
单链表——反向输出结点给定一个单链表,设计一个从尾到头反向输出的算法算法一:对空间复杂度没有要求1)利用栈void RePrint(LinkList &L){ InitStack(S);//初始化栈 LNode *p=L->next; while(p){ push(S,p->data);//将数据依次入栈 p=p->next; } while(!isEmpty(S)) print(pop(s));//栈非空,打印栈中元素2)利用递归先空原创 2020-06-29 20:51:30 · 676 阅读 · 0 评论 -
顺序表之求两表的中位数
问题描述:给出两个有序顺序表求两表的中位数前言:本人看王道上面的算法太过复杂,于是自己乱想出来一种算法,经测试暂时没有发现错误,若有大神找到不足之处,还望纠正!算法思想对两表A B从头开始扫描,并设置两个指针pa,pb分别指向A B表首1)若pa指向的元素小于或等于pb指向的元素则pa+1,否则pb+12)重复上述步骤天花板(n/2)次(n为一个表中的总元素个数)3)取max=max(A[pa],B[pb]),得到的数即为两表的中位数关键代码 for(int i=0;i<.原创 2020-06-28 22:43:01 · 5041 阅读 · 5 评论 -
顺序表-删除所有值为item的数据元素
删除所有值为item的数据元素 void DeleteItem(int a[],int item,int n) { int p=0; for(int i=0;i<n;i++){ printf("%d",a[i]); if(a[i]!=item)//若当前元素不为item a[p++]=a[i];//则置入数组 } n=p;//重置数组长度}原创 2020-06-12 15:53:13 · 1831 阅读 · 0 评论 -
二叉树-输出所有叶子结点的路径
输出所有叶子结点的路径发现自己递归没有掌握,所以对于树这块的算法真的不行,只能参考大神们的算法了char x[100];//全局数组存储某一路径上的结点的值void dfs(BiTree *T,int k){ if(T==0) return 0; x[k]=T->data; if(T->lchild==0&&T->rchild==0) for(i=0;i<=k;i++)//输出路径 printf(T->data); dfs(T->转载 2020-06-04 20:56:31 · 1178 阅读 · 0 评论 -
二叉树-求第一条最长路径长度并输出路径
求第一条最长路径长度并输出路径算法思想利用递归遍历思想,先求出二叉树最长路径也就是当前树的高度再调用求路径长度的函数判断指针走向输出路径int LongestPath(BiTree *T){ //求出当前二叉树的最长路径 if(T==0) return 0; if(T->lchild==0&&T->rchild==0) return 1; int L=LongestPath(T->lchild); int R=LongestPath(T->rch转载 2020-06-04 19:30:12 · 9165 阅读 · 8 评论 -
二叉树-统计树中度为一结点的总数
统计树中度为一结点的总数层次遍历int CountOne(BiTree *T){ if(T==0)return 0;//若树为空,返回0 if(T->lchild==0&&T->rchild==0) return 1;//只有根节点,返回1 BiTree *q[10];//队列 BiTree *p=T; int rear=-1,front=-1;//头指针与尾指针 int count=0; q[++rear]=p; while(rear>front原创 2020-06-03 20:27:30 · 914 阅读 · 0 评论 -
单链表-删除某区间范围内的结点
删除某区间范围内的结点删除递增有序表中值大于等于mink,小于等于maxk的元素void Delete(LNode *L,int mink,int maxk){ LNode *p=L->next,*q,*pre=L; while(p->data<mink){ pre=p; p=p->next; } while(p->data<=maxk){ q=p; p=p->next; pre->next=p; free(q); }原创 2020-06-03 19:42:03 · 1921 阅读 · 3 评论 -
单链表-合并两个递增有序链表
合并两个递增有序链表将两个递增的有序链表合并为一个递增的有序链表LNode *Merge(LNode *L1,LNode *L2){ if(L1==0||L2==0) return 0;//若两表为空则返回空 if(L1->next==0) return L2; //表1为空直接返回表二 LNode *p=L1->next,*q=L2->next,*r=L1; L1->next=0; L2->next=0; while(p&&q){ if原创 2020-06-03 18:59:30 · 1119 阅读 · 1 评论 -
单链表-找出最大结点
找出最大结点设计一个算法,通过一趟遍历确定长度为n的单链表中值最大的结点LNode * FindMax(LNode *L) { LNode *p=L->next,*max=p; while(p){ if(p->data>max->data) max=p; p=p->next; } return (LNode*)max;}...原创 2020-06-02 19:42:18 · 3025 阅读 · 0 评论 -
单链表-按正负划分链表
按正负划分链表设计 一个算法将一个带头节点的单链表A分解为具有相同结构的链表B和C,其中B表的结点为A表中值小于零的结点,而C表的结点为A表中值大于零的结点要求利用A中的结点且A中结点为非零整数没有运行处来不知道哪里错了void Divide(LNode *L1,LNode *L2,LNode *L3){ LNode *p1=L1->next,*p2=L2,*p3=L3,*r; L1->next=0; while(p1){ if(p1->data<0){原创 2020-06-02 19:30:33 · 674 阅读 · 0 评论 -
单链表-求交集
求两有序单链表的交集给出两个有序单链表,求出交集 LNode *CommonList(LNode *L1,LNode *L2){ if(L1==0||L2==0) return L1; LNode *pa=L1->next,*r=L1; L1->next=0; r->data=-10000; LNode *pb=L2->next,*q; while(pa&&pb){ if(pa->data>pb->data)原创 2020-06-01 20:28:29 · 710 阅读 · 0 评论 -
单链表-两有序表取补集
单链表-两有序表取补集已知两个链表A和B分别表示两个集合,其元素递增排列,请设计一个算法就除两个集合的差集(出现于集合1,而不存在于集合2)算法思想1.在遍历链表的过程中一般会出现三种情况2.设计三个指针 *pa指向L1的结点,*pb 指向L2的结点,*pre作为 pa的前驱,删除时方便删除3.A中结点的结点值大于 B ,则指针pb移动4.A中结点的结点值小于 B ,则指针pa与pre移动5.A中结点的结点值等于 B ,则使辅助指针p指向pa,指针pa移动 ,进行删除操作代码实原创 2020-06-01 19:48:57 · 334 阅读 · 0 评论 -
单链表-两非递减表合并成一非递增
两非递减表合并成一非递增将两个非递减有序链表合成一个非递增有序链表条件:不能使用额外空间算法思想利用“摘"结点的方法,每次选择结点值较小的结点插入比有一个链表为全合并完成,则将其结点依次以头插的形式插入表中实现代码LNode *MergeUpperToLower(LNode *L1,LNode *L2){ if(L1==0||L2==0) return 0; LNode *p=L1->next,*q=L2->next,*r=L1,*temp; L1->ne原创 2020-06-01 19:17:52 · 1560 阅读 · 2 评论 -
顺序表-找出最小正整数
找出最小正整数算法思想设计一个指标k=1表示当前趟数未出现的最小正整数,若数组中出现与k值相等的元素则k值加1,最后遍历完成得到的k即为数组中未出现的最小正整数#include<stdio.h>#define M 5int main(){ //找出未出现的最小正整数 int a[M]; printf("请输入数:\n"); for(int i=0;i<M;i++){ scanf("%d",&a[i]); } int k=1; for(int i=0原创 2020-05-31 19:28:40 · 625 阅读 · 3 评论 -
单链表-有序表合并
有序单链表的合并设计两个有序单链表的合并排序算法算法思想1.设有两个有序单链表L1,L2,设计两个指针p与q分别指向L1,L2,以及尾指针 *r;2.将L1的指针域置空,并将r指向L1;3.循环遍历单链表,并对p,q所指向的结点的值进行比较1)p->datadata将r指向p;p向后移2)p->data>=q->data将r指向q;q向后移4.最后肯定有一个表有结余的结点,将r指向剩余结点即可//合并 LNode *Merge(LNode *L1,原创 2020-05-30 17:57:19 · 338 阅读 · 0 评论 -
单链表-拆分
单链表拆分设单链表中仅有三类字符的数据元素(大写、数字、其他字符),要求利用原单链表中结点空间设计出三个单链表的算法,使每个单链表只包含同类字符。算法思想//情况 若当前结点的数据域为数字//判断digital是否为空,若为空直接指向p 设置临时结点q 指向p p向后移动,将p头插法插入结点void Diversion(LNode *L){LNode *p=L->next,*digtal=0,*al=0,*other=0;L->next=0;LNode *q;while原创 2020-05-30 17:23:28 · 1836 阅读 · 1 评论 -
单链表-创建
单链表的创建参考这位大神的文章#include<stdio.h> #include<stdlib.h>typedef struct LNode{ struct LNode *next; int data;}LNode;LNode *HeadCreateList(int len){ LNode *L = (LNode*)malloc(sizeof(LNode)); //创建一个头结点 LNode *temp = L;//声明一个中间变量,指向头结点,用于遍历链表转载 2020-05-30 15:33:07 · 327 阅读 · 0 评论 -
顺序表-奇数与偶数互换
//将所有奇数移到偶数之前 //算法思想:访问依次访问数组中的每一个元素//若当前元素是奇数,则继续访问//若当前元素是偶数,则找到离其最近的元素进行交换,直至所有奇数都在偶数之前原创 2020-05-26 20:06:15 · 1171 阅读 · 1 评论 -
图——邻接矩阵转邻接表
图——邻接矩阵转邻接表先试试,然后慢慢改#include <stdio.h>int main() {#include <stdio.h>typedef struct ArcNode{ struct ArcNode *next; int adj;} ArcNode;typedef struct Vnode{ ElemType Data; ArcNode *first;}Vnode,adjlist[];typedef struct{原创 2020-05-25 19:01:20 · 939 阅读 · 0 评论 -
B1_删除以值为x的根节点的子树
不知道对不对,静待大神纠错原创 2020-04-20 20:46:42 · 184 阅读 · 0 评论