当前位置: 首页 > news >正文

王道考研编程题总结

我还在完善中,边复习边完善(这个只是根据我自身总结的) 

一、 线性表

1. 结构体

#define MaxSize 40
typedef struct{ElemType data[MaxSize];int length;
}SqList

2. 编程题

1.  删除最小值

  • 题意 :从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删函数的值,空出的位置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。
  • 思路 :搜索整个顺序表,查找最小值元素并记住其位置,搜索结束后用最后一个元素填补空出的原最小值元素的位置。

【注意】:别忘了边界条件和线性表长度要-1,因为属于改变线性表内容,所以传进去的是地址

bool Delete(SqList &L, ElemType &x) //此处不能用int,因为不明确是啥类型
{/*1. 判断是否为空2. 删除最小值,若线性表只有一个数,则返回3. 用最后一个位置填补空出的位置*/if(L.length == 0) return false;int ElemType = L.data[0];int pos = 0;for(int i = 1; i < L.length; i ++){if(L.data[i] < x){x = L.data[i];pos = i;}}L.length --;//if(L.length == 0) return true; 该步可以不用要(不需要太注意题目未提的边界)L.data[pos] = L.data[L.length];return true;
}

2. 元素逆置

void Reverse(SqList &L)
{int l = 0, r = L.length-1;while(l < r){int temp = L.data[l];L.data[l] = L.data[r];L.data[r] = temp;r --; l ++;}
}

3. 删除所有值为x的数

别忘了更新长度,以及&符

/*
用cnt统计值不为x的数字的个数,当遍历到某数(值不为x)时,将其移动到线性表中表cnt-1的位置。
*/void Delete_x(SqList &L, int x)
{int cnt = 0;for(int i = 0; i < L.length; i ++){if(L.data[i] != x){cnt ++;L.data[cnt-1] = L.data[i];}}L.length = cnt; //不要忘了更新长度
}

5. 删除所有值重复的元素

题目已说是有序的

/*
与第三题的思想一致
用cnt记录未重复的元素的个数
初始时视第一个数为不重复的数,从左向右移动,若该数与前一个数不相同,则可视为不重复的数。
若该数为第cnt个不重复的数,则将其插入到数组中的第cnt个位置上
*/void DisSame(SqList &L)
{int cnt = 1;for(int i = 1; i < L.length; i ++){if(L.data[i] != L.data[i-1]){cnt ++;L.data[cnt-1] = L.data[i];}}L.length = cnt; //不要忘了更新长度
}

10. 数组的循环左移

/*
法一,利用公式i=(i-p+n)%n(需要开辅助数组)
正解:翻转三次
*/void Reverse(int a[], int l, int r)
{for(int i = 0; i < (r-l+1)/2; i ++) //不是等于(利用正数第i与倒数第i的思想){int temp = a[r-i];a[r-i] = a[l+i]a[l+i] = temp;}
}void LeftMove(int a[], int n, int p)
{Reverse(a, 0, p-1);Reverse(a, p, n-1);Reverse(a, 0, n-1);
}

二、 链表

1. 结构体

typedef struct LNode
{ElemType data;struct LNode *next;
}LNode, *LinkList;

2. 基础用法

要注意的地方

定义完一个指针后(LNode *q)

如果需要给它赋值(即需要使用空间)

需要这样做

q = (LNode*)malloc(sizeof(LNode));

1. 初始化

bool InitList(LinkList &L)
{L = (LNode*)malloc(sizeof(LNode)); //创建头结点L->next = NULL;return true;
}

 2. 头插法

//头插法建立单链表(倒序)
void HeadInsert(LinkList &L)
{LNode *q; int x;int n; scanf("%d", &n);for(int i = 0; i < n; i ++){scanf("%d", &x);q = (LNode*)malloc(sizeof(LNode));q->data = x;q->next = L->next;L->next = q;}
}

3. 尾插法 

//尾插法(正序)
void TailInsert(LinkList &L)
{LNode *q, *p; int x;p = L;int n; scanf("%d", &n);for(int i = 0; i < n; i ++){scanf("%d", &x);q = (LNode*)malloc(sizeof(LNode)); //这步不能省,要赋值的指针就需要开空间q->data = x;p->next = q;p = q;}p->next = NULL;
}

3. 编程题 

1. 找中间结点

算法思想:设置两个指针p和q,指针p每次走一步,指针q每次走两步,当指针q到达链尾时,指针p恰好在链表的中间结点

【注意】最后可能不足两步,故要看临界条件

void work(LNode *h)
{LNode *p, *q;//寻找中间结点p = q = h;while(q->next != NULL){p = p->next; //p走一步q = q->next;if(q->next != NULL) q = q->next; //q走两步}
}

17. 找倒数第k个位置的结点

/*
算法思想
指针p先向前走k步走到第k个结点时,令指针q指向头结点,随后让指针p和指针q同时向后走,
当指针p走到尾时,指针q所指向的结点即为倒数第k个位置的结点
当指针p还未走到第k个结点就到链表尾,则返回0
*/bool Find(LinkList L, int k)
{LNode *p, *q;p = q = L;for(int i = 0; i < k; i ++){p = p->next;if(!p) return 0;}while(p != NULL){p = p->next;q = q->next;}printf("%d", q->data);return 1;
}

 2. 将某段链表逆置

利用头插法的思想

题目:将一个链表(已经插好的)进行逆置

void reverse(LNode *h)
{LNode *p = h->next; //p指向链表的第一个结点,同时也是逆转后的最后一个结点if(p == NULL) return ;LNode *q = p->next;while(q != NULL){p->next = q->next; //将q摘下q->next = h->next;h->next = q; //将q插入头结点q = p->next; //更新}
}

18. 公共后缀的起始位置

要注意,主函数中,传的参数是指针,返回的也是指针类型

/*
算法思想:
指针p、q分别指向两个单词所在链表的头节点,遍历一遍链表,分别得到两个链表的长度,
假设一个链表比另一个链表的长度长k,那么指向该链表的指针先向前移动k步,之后同步遍历两个链表,
当p、q指向的结点为同一结点时,该结点即为第一个公共结点。
*//*
要注意,主函数中,传的参数是指针,返回的也是指针类型
*///求链表长度的函数
int GetLen(LNode *p)
{int len = 0;while(p->next != NULL){len ++;p = p->next;}return len;
}SNode *Find(LNode *str1, LNode *str2)
{int m = 0, n = 0; //两个链表的长度LNode *p = str1->next, *q = str2->next;m = GetLen(str1);  //求链表长度n = GetLen(str2);for(int i = m; m > n; m --) //若m>n,移动p指针p = p->next;for(int i = n; n > m; n --) //若n>m,移动q指针q = q->next;while(p != q && p != NULL) //寻找共同后缀的起始地址{p = p->next;q = q->next;}return p;
}

19. 去掉绝对值重复的结点

注意:

1. 题目需要给出数据类型定义

2. struct node *link; //题目要求用link,故此处不能用data

3. 删除结点时,要释放结点空间

    free(q); //释放该结点的空间

/*
算法思想:
该算法使用空间换时间的思想,开一个大小为n+1的数组a;各元素的初值为0.从头一次扫描链表
中的各结点。同时检查a[|data|]的值,若为0则保留该结点,并令a[|data|]=1;否则将该结点
从链表中删除
*/
typedef struct LNode
{int data;struct node *link; //题目要求用link,故此处不能用data
}LNode;void work(LNode *h, int n) //头指针和数值范围是已经给出的,放在函数传参里即可
{int a[n + 1];LNode *p = h, *q;while(p->next != NULL){int x = p->next->data;if(x < 0) x = -x; //绝对值if(a[x] == 0) //该绝对值未出现过a[x] = 1;else //该绝对值出现过,则删除该结点{q = p->next;p->next = q->next;free(q); //释放该结点的空间}}
}

20. 重新交叉排列

 【考察知识点】

1. 寻找中间结点

2. 将一段结点逆置

算法思想:

(1)先找出算法L的中间结点,为此设置两个指针p和q,指针p每次走一步,指针q每次走两步,当指针q到达链尾时,指针p恰好在链表的中间结点

(2)利用头插法将L的后半段结点原地逆置

(3)将后半段的结点按照题目要求依次插入前半段结点中

void work(LNode *h)
{LNode *p, *q, *r, *s;//寻找中间结点p = q = h;while(q->next != NULL){p = p->next; //p走一步q = q->next;if(q->next != NULL) q = q->next; //q走两步}q = p->next; //p为中间结点,q为后半段头结点//开始逆置while(q->next != NULL){r = q->next;q->next = r->next; //摘下r->next = p->next;p->next = r;}q->next = NULL;//将后半段结点插到前半段s = h->next; //s指向前半段的第一个结点q = p->next;while(q != NULL){p->next = q->next;q->next = s->next;s->next = q;s = q->next;q = p->next;}
}

三、栈

四、 队列

五、括号序列

六、 树

1. 结构体

typedef struct BiTNode{ElemType elem;  //数据域struct BiTNode *lchild, *rchild; //左、右孩子
}BiTNode, *BiTree;

 2. 递归遍历

        先序

void PreOrder(BiTree T)
{if(T != NULL){visit(T);PreOrder(T->lchild);PreOrder(T->rchild);}
}

        中序

void PreOrder(BiTree T)
{if(T != NULL){PreOrder(T->lchild);visit(T);PreOrder(T->rchild);}
}

        后序

void PreOrder(BiTree T)
{if(T != NULL){PreOrder(T->lchild);PreOrder(T->rchild);visit(T);}
}

3. 非递归遍历

需要用到栈

先序遍历

void PreOrder2(BiTree T)
{BiTree p = T;InitStsck(S);while(!Empty(S) || p){if(p){visit(p);Push(S, p); //保留p是为了之后探索它的右孩子p = p->lchild;}else{Pop(s, p);p = p->rchild;}}}

中序遍历

中序遍历和先序遍历的思想是一样的,只是改变了访问的结点的位置

void InOrder2(BiTree T)
{BiTree p = T;InitStsck(S);while(!Empty(S) || p){if(p){Push(S, p); //保留p是为了之后探索它的右孩子p = p->lchild;}else{//此时已经遍历完左子树了,才能访问根节点Pop(s, p);visit(p); p = p->rchild;}}}

4. 层次遍历

(1)上到下,左到右

void LevelOrder(BiTree T)
{BiTree p; //用来接收队头InitQueue(Q);EnQueue(Q, T);while(!IsEmpty(Q)){DeQueue(Q, p);visit(p);if(p->lchild != NULL) EnQueue(Q, p->lchild);if(p->rchild != NULL) EnQueue(Q, p->rchild);}}

(2)下到上,右到左

算法思想:利用原有的层次遍历算法,出队的同时将各结点指针入栈,在所有的结点入栈后再从栈顶开始依次访问结点

void InvertLevel(BiTree T)
{InitQueue(Q);InitStack(S);EnQueue(Q, T);BiTree p;while(IsEmpty(Q) == false){DeQueue(Q, p); //注意,不是p = Dequeue(Q);Push(S, p); //出队,入栈if(p->lchild)EnQueue(Q, p->lchild);if(p->rchild)EnQueue(Q, p->rchild);}//自下而上,从右到左的层次遍历while(IsEmpty(S) == false){Pop(S, p); //注意,不是p = Pop(S);visit(p->data); //遍历的是值}
}

5. 求二叉树高度

(1) 递归

int GetGigh(BiTree T)
{if(T == NULL) return 0;int lhigh = GetHigh(T->lchild);int rhigh = GetHigh(T->rchild);int high =  1 + (lchild > rchild ? lchild : rchild);return high;
}

(2)非递归

有点难度

P168

算法思想:采用层次遍历算法,设置变量level来记录当前结点所在的层数,设置变量last指向当前层的最右结点,每次层次遍历出队时队头指针与last比较,若相等,则lever加一,并让last指向下一层的最右结点,即当前的队尾结点,直到遍历完成,level即为二叉树的高度

注意事项

此处因为需要用到队尾元素,所以用的是数组队列

数组队列存的是结点,所以类型应为BiTree

int GetHigh(BiTree T)
{int level = 0; //记录高度int last = 0; //记录当前层的最右结点int front = -1, rear = -1; //队头和队尾指针BiTree Q[MaxSize]; //队列类型为结点Q[++rear] = T;BiTree p;while(IsEmpty(Q) == false) //队列不为空时{p = Q[++front];if(p->lchild)Q[++rear] = p->lchild; //左孩子入队if(p->rchild)Q[++rear] = p->rchild; //右孩子入队   if(last == front) //处理该层的最右结点;{level ++;last = rear;}}return level;
}

 6. 判断是否是完全二叉树

算法思想:采用层次遍历算法,遇到空节点时,查看其后是否有非空节点(不需要遍历完所有结点,当某层结点都为空时,自然没有后代),若有,则二叉树不是完全二叉树

void InvertLevel(BiTree T)
{InitQueue(Q);EnQueue(Q, T);BiTree p;while(IsEmpty(Q) == false){DeQueue(Q, p); //注意,不是p = Dequeue(Q);if(p){EnQueue(Q, p->lchild);EnQueue(Q, p->rchild);}else //遇到空结点{while(IsEmpty(Q) == false) //判断队列中的剩余结点是否都为空{DeQueue(Q, p);if(p) return false;}}}return true;
}

7. 统计双分支结点个数

法一:递归遍历+全局变量

法二:递归遍历,但不用全局变量

 int Work(BiTree T)
{if(T == NULL) return 0; //别忘了空节点也要有返回值   if(T->lchild && T->rchild) //自身是双分支结点return (Work(T->lchild) + Work(T->rchild)) + 1;elsereturn Work(T->lchild) + Work(T->rchild);
}

 8. 将树中所有结点的左右结点交换

算法思想:采用后序递归算法,对于b结点,先交换b结点左孩子的左右子树,再交换b结点右孩子的左右子树,最后再交换b结点的左右孩子

[注意]:交换的时候要链表一样防止链接丢失

void Work(BiTree T)
{if(T != NULL){Work(T->lchild);Work(T->rchild);//交换三部曲BiTree temp = T->lchild;T->lchild = T->rchild;T->rchild = temp;}
}

9. 求先序遍历中第k个结点的值

难点:返回时要一层一层递归返回

方法:使用全局变量来记录是否已经找到该值,并将该值记录在全局变量中

【当不知道要记录的值的类型时,用EmemType来赋值】

int flag = 0; //是否找到第k个数
ElemType ans; //记录该结点数据(当不知道类型时,用英文)
int res = 0; //res为当前遍历的数的序号
int Work(BiTree T, int k)
{if(flag == 1) return ans;res ++;if(res == k){flag = 1; //找到了;ans = T->data;return ans;}if(T->lchild) Work(T->lchild, k); //只遍历存在的结点if(T->rchild) Work(T->rchild, k);
}

10. 删除子树

题目:对于树中每个元素值为x的结点,删除以它为根的子树,并释放相应的空间

1. 删除子树使用后序遍历,因为要先删完子孙后代再删自身

2. 释放内存用free();

3. Work函数之所以写得比较复杂是因为:

值为x的结点的父亲在删完子树后,需要指向NULL,所以通过父亲来判断孩子的值是否为x;

void Delete(BiTree &bt) //删除以bt为根的子树//注意,传入的是地址
{if(bt){Delete(bt->lchild);Delete(bt->rchild);free(bt);}
}void Work(BiTree T, ElemType x)
{if(!T) return ;if(T->data == x)Delete(T);else{if(T->lchild->data == x) //孩子值为x,删掉,并将孩子位置换成NULL{Delete(T->lchild);T->lchild = NULL;}elseWork(T->lchild, x);if(T->rchild->data == x){Delete(T->rchild);T->rchild = NULL;}elseWork(T->rchild, x);}
}

 11. 求非空二叉树宽度

宽度:具有结点数最多的那一层

可以利用第五题:非递归求高度的思想求最大宽度

当last == front时,cnt = rear - front;

ans = max(ans, cnt);

 12. 知先序求后序

题目:设有一棵满二叉树,已知其先序序列为pre(字符串),设计一个算法求其后序序列post。

对于一般二叉树而言,仅根据先序或后序序列,不能确定另一个遍历序列。但对于满二叉树,可以确定

可以自己画画,很容易找规律,使用递归

#include<stdio.h>void work(char pre[], int l, int r)
{if(l == r) {printf("%c", pre[l]);return ;}work(pre, l+1, l+(r-l)/2);work(pre, l+(r-l)/2+1, r);printf("%c", pre[l]);
}int main()
{char pre[100] = "01245367";work(pre, 1, 7);return 0;
}

 13. 将叶节点连成单链表

题目:将二叉树的结点按从左到右的顺序连成一个单链表,表头指针为head,二叉树按二叉链表方式存储,链接时用叶结点的右指针域来存放单链表指针

算法思想:使用先序遍历遍历到的叶节点的顺序就是从左到右的,故用pre指针记录前一个叶节点即可。

LinkList head, pre = NULL;
LinkList Work(BiTree T)
{if(T){if(T->lchild==NULL && T->rchild==NULL){if(pre == NULL){head = L;pre = L;}else{pre->rchild = T;pre = T;}}Work(T->lchild);Work(T->rchild);}return head;
}

七、 图

对于默认图(即不带权),在邻接矩阵中,如两点之间存在边,则g[a][b]=1.否则为0

1. 出度大于入度的顶点个数

算法思想:在邻接矩阵中,对于每个顶点,其所在行中1的个数为该顶点对应的出度,其所在列1的个数为该顶点对应的入度。因此可以枚举每个顶点,用count1记录出度,用count2记录入度,用ans来记录K顶点的个数,当count1>count2时,输入该顶点,ans加一。最后返回ans的值。

int printVertices(MGraph G)
{int ans = 0; //K顶点个数for(int i = 0; i < G.numVertices; i ++) //枚举顶点{int count1 = 0; //记录出度int count2 = 0; //记录入度for(int j = 0; j < G.numVertices; j ++) //对行count1 += G.Edge[i][j]);for(int j = 0; j < G.numVertices; j ++) //对列count2 += G.Edge[j][i])if(count1 > count2) {printf("%c ", G.VerticesList[i]);ans ++;}}return ans;
}

 八、 查找

1. 折半查找

#define MaxSize 40
typedef struct{
    ElemType data[MaxSize];
    int length;
}SqList

题目:写出折半查找的递归算法(要写递归的二分), low为1, high为ST.length(对线性表操作)

//自己定义线性表
#define MaxSize 40
typedef struct{ElemType data[MaxSize];int length;
}SqListint find(int a[], int low, int high, int x)
{int pos;int mid = (low + high)/2;if(ST.data[mid] > x) pos = find(a, low, mid-1, x);else if(ST.data[mid] < x)pos = find(a, mid+1, high, x);else pos = mid;return pos;
}

2. 矩阵查找

算法思想:从矩阵A的右上角即第一行的最后一列的那个元素开始比较,若当前元素小于目标值,则向下移动一行,若当前元素大于目标值,则向左移动一列 ,若当前元素等于目标值,则返回true,如果移动的过程越界了,说明矩阵中不存在该目标值,返回false。

 九、 并查集

初始化操作

void Init(int p[])
{for(int i = 0; i < SIZE; i ++)p[i] = i;
}

 1. 压缩路径

改进了Find操作

int find(int p[], int x)
{if(x != p[x]) p[x] = find(p[x]);return p[x];
}

十、 图

1. 与二叉树不一样(树没有环),dfs和bfs遍历图需要用visit[ ]来记录该结点是否访问过,防止重复访问

书本p227

2. BFS求解单元最短路问题时需要用d[ ]来记录当前距离

d[ ]要初始化为无穷大

3. 知道图怎么存就可以写题了,那些扩展都在搜索图的基础上进行的

1. bfs搜索

主函数

相关文章:

王道考研编程题总结

我还在完善中&#xff0c;边复习边完善&#xff08;这个只是根据我自身总结的&#xff09; 一、 线性表 1. 结构体 #define MaxSize 40 typedef struct{ElemType data[MaxSize]&#xff1b;int length; }SqList 2. 编程题 1. 删除最小值 题意 &#xff1a;从顺序表中删除…...

算法2--滑动窗口

滑动窗口 滑动窗口经典例题长度最小的子数组无重复字符的最长子串[最大连续1的个数 III](https://leetcode.cn/problems/max-consecutive-ones-iii/description/)[将 x 减到 0 的最小操作数](https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/description…...

pycharm或conda中配置镜像源

文章目录 1. 为什么要配置镜像源2. pycharm配置2.1使用pip配置国内镜像源2.2 Pycharm中更改镜像源 3.conda配置镜像源3.1 使用conda命令3.2 文件所在位置&#xff08;进行增删&#xff09;3.3 conda常用的几个命令 参考文献 1. 为什么要配置镜像源 由于Python在下载包时&#…...

C#基础之方法

文章目录 1 方法1.1 定义方法1.2 参数传递1.2.1 按值传递参数1.2.2 按引用传递参数1.2.3 按输出传递参数1.2.4 可变参数 params1.2.5 具名参数1.2.6 可选参数 1.3 匿名方法1.3.1 Lambda 表达式1.3.1.1 定义1.3.1.2 常用类型1.3.1.3 Lambda 表达式与 LINQ1.3.1.4 Lambda 表达式的…...

JVM 性能调优 -- JVM常用调优工具【jps、jstack、jmap、jstats 命令】

前言&#xff1a; 前面我们分析怎么去预估系统资源&#xff0c;怎么去设置 JVM 参数以及怎么去看 GC 日志&#xff0c;本篇我们分享一些常用的 JVM 调优工具&#xff0c;我们在进行 JVM 调优的时候&#xff0c;通常需要借助一些工具来对系统的进行相关分析&#xff0c;从而确定…...

PostgreSQL 三种关库模式

PostgreSQL 三种关库模式 基础信息 OS版本&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本&#xff1a;16.2 pg软件目录&#xff1a;/home/pg16/soft pg数据目录&#xff1a;/home/pg16/data 端口&#xff1a;5777PostgreSQL 提供了三种关库模式&…...

《运放秘籍》第二部:仪表放大器专项知识点总结

一、差分放大器与仪表放大器的讨论 1.1. 仪放的前世今生——差分放大器原理&#xff1f; 1.2. 差分放大的原理 1.3. 差分放大器检测电流 1.4. 差分放大器端一&#xff1a;输入阻抗 1.5. 差分放大器端二&#xff1a;共模抑制比 1.6. 为什么关注输入阻抗&#xff1f;共模抑…...

C++STL之vector(超详细)

CSTL之vector 1.vector基本介绍2.vector重要接口2.1.构造函数2.2.迭代器2.3.空间2.3.1.resize2.3.2.capacity 2.4.增删查找 3.迭代器失效4.迭代器分类 &#x1f31f;&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f;&#x1f31f; &#x1f680;&#x1f68…...

ubuntu环境下安装electron环境,并快速打包

1.配置镜像源 关闭防火墙&#xff0c;命令&#xff1a;sudo ufw disable 1.1配置国内镜像源&#xff1a; vim /etc/apt/source.list deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiversedeb-src https://mirrors.aliyun.com/ubuntu/ jammy main…...

【Pytorch】优化器(Optimizer)模块‘torch.optim’

torch.optim 是 PyTorch 中提供的优化器&#xff08;Optimizer&#xff09;模块&#xff0c;用于优化神经网络模型的参数&#xff0c;更新网络权重&#xff0c;使得模型在训练过程中最小化损失函数。它提供了多种常见的优化算法&#xff0c;如 梯度下降法&#xff08;SGD&#…...

API平台建设之路:从0到1的实践指南

在这个互联网蓬勃发展的时代&#xff0c;API已经成为连接各个系统、服务和应用的重要纽带。搭建一个优质的API平台不仅能为开发者提供便利&#xff0c;更能创造可观的商业价值。让我们一起探讨如何打造一个成功的API平台。 技术架构是API平台的根基。选择合适的技术栈对平台的…...

【Flink-scala】DataStream编程模型之窗口计算-触发器-驱逐器

DataStream API编程模型 1.【Flink-Scala】DataStream编程模型之数据源、数据转换、数据输出 2.【Flink-scala】DataStream编程模型之 窗口的划分-时间概念-窗口计算程序 文章目录 DataStream API编程模型前言1.触发器1.1 代码示例 2.驱逐器2.1 代码示例 总结 前言 本小节我想…...

信号灯集以及 P V 操作

一、信号灯集 1.1 信号灯集的概念 信号灯集是进程间同步的一种方式。 信号灯集创建后&#xff0c;在信号灯集内部会有很多个信号灯。 每个信号灯都可以理解为是一个信号量。 信号灯的编号是从0开始的。 比如A进程监视0号灯&#xff0c;B进程监视1号灯。 0号灯有资源&…...

在 Flutter app 中,通过视频 URL 下载视频到手机相册

在 Flutter app 中&#xff0c;通过视频 URL 下载视频到手机相册可以通过以下步骤实现&#xff1a; 1. 添加依赖 使用 dio 下载文件&#xff0c;结合 path_provider 获取临时存储路径&#xff0c;以及 gallery_saver 将文件保存到相册。 在 pubspec.yaml 中添加以下依赖&…...

Nature Methods | 人工智能在生物与医学研究中的应用

Nature Methods | 人工智能在生物与医学研究中的应用 生物研究中的深度学习 随着人工智能&#xff08;AI&#xff09;技术的迅速发展&#xff0c;尤其是深度学习和大规模预训练模型的出现&#xff0c;AI在生物学研究中的应用正在经历一场革命。从基因组学、单细胞组学到癌症生…...

Axure PR 9 随机函数 设计交互

​大家好&#xff0c;我是大明同学。 这期内容&#xff0c;我们将深入探讨Axure中随机函数的用法。 随机函数 创建随机函数所需的元件 1.打开一个新的 RP 文件并在画布上打开 Page 1。 2.在元件库中拖出一个矩形元件。 3.选中矩形元件&#xff0c;样式窗格中&#xff0c;将…...

【人工智能基础05】决策树模型

文章目录 一. 基础内容1. 决策树基本原理1.1. 定义1.2. 表示成条件概率 2. 决策树的训练算法2.1. 划分选择的算法信息增益&#xff08;ID3 算法&#xff09;信息增益比&#xff08;C4.5 算法&#xff09;基尼指数&#xff08;CART 算法&#xff09;举例说明&#xff1a;计算各个…...

【人工智能基础03】机器学习(练习题)

文章目录 课本习题监督学习的例子过拟合和欠拟合常见损失函数&#xff0c;判断一个损失函数的好坏无监督分类&#xff1a;kmeans无监督分类&#xff0c;Kmeans 三分类问题变换距离函数选择不同的起始点 重点回顾1. 监督学习、半监督学习和无监督学习的定义2. 判断学习场景3. 监…...

HarmonyOS(60)性能优化之状态管理最佳实践

状态管理最佳实践 1、避免在循环中访问状态变量1.1 反例1.2 正例 2、避免不必要的状态变量的使用3、建议使用临时变量替换状态变量3.1 反例3.2 正例 4、参考资料 1、避免在循环中访问状态变量 在应用开发中&#xff0c;应避免在循环逻辑中频繁读取状态变量&#xff0c;而是应该…...

数据库课程设计报告 超市会员管理系统

一、系统简介 1.1设计背景 受到科学技术的推动&#xff0c;全球计算机的软硬件技术迅速发展&#xff0c;以计算机为基础支撑的信息化如今已成为现代企业的一个重要标志与衡量企业综合实力的重要标准&#xff0c;并且正在悄无声息的影响与改变着国内外广泛的中小型企业的运营模…...

C++算法练习-day54——39.组合总和

题目来源&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题目思路分析 题目&#xff1a;给定一个整数数组 candidates 和一个目标数 target&#xff0c;找出所有独特的组合&#xff0c;这些组合中的数字之和等于 target。每个数字在每个组合中只能使用一次。 思路&a…...

计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

Linux的文件系统

这里写目录标题 一.文件系统的基本组成索引节点目录项文件数据的存储扇区三个存储区域 二.虚拟文件系统文件系统分类进程文件表读写过程 三.文件的存储连续空间存放方式缺点 非连续空间存放方式链表方式隐式链表缺点显示链接 索引数据库缺陷索引的方式优点&#xff1a;多级索引…...

【Vue3】从零开始创建一个VUE项目

【Vue3】从零开始创建一个VUE项目 手动创建VUE项目附录 package.json文件报错处理: Failed to get response from https://registry.npmjs.org/vue-cli-version-marker 相关链接&#xff1a; 【VUE3】【Naive UI】&#xff1c;NCard&#xff1e; 标签 【VUE3】【Naive UI】&…...

9)语法分析:半倒装和全倒装

在英语中&#xff0c;倒装是一种特殊的句子结构&#xff0c;其中主语和谓语&#xff08;或助动词&#xff09;的位置被颠倒。倒装分为部分倒装和全倒装两种类型&#xff0c;它们的主要区别在于倒装的程度和使用的场合。 1. 部分倒装 (Partial Inversion) 部分倒装是指将助动词…...

Scala关于成绩的常规操作

score.txt中的数据&#xff1a; 姓名&#xff0c;语文&#xff0c;数学&#xff0c;英语 张伟&#xff0c;87&#xff0c;92&#xff0c;88 李娜&#xff0c;90&#xff0c;85&#xff0c;95 王强&#xff0c;78&#xff0c;90&#xff0c;82 赵敏&#xff0c;92&#xff0c;8…...

使用Java实现度分秒坐标转十进制度的实践

目录 前言 一、度分秒的使用场景 1、表示方法 2、两者的转换方法 3、区别及使用场景 二、Java代码转换的实现 1、确定计算值的符号 2、数值的清洗 3、度分秒转换 4、转换实例 三、总结 前言 在地理信息系统&#xff08;GIS&#xff09;、导航、测绘等领域&#xff0c…...

根据后台数据结构,构建搜索目录树

效果图&#xff1a; 数据源 const data [{"categoryidf": "761525000288210944","categoryids": "766314364226637824","menunamef": "经济运行","menunames": "经济运行总览","tempn…...

食品计算—FoodSAM: Any Food Segmentation

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…...

2411rust,1.83

原文 1.83.0稳定版 新的常能力 此版本包括几个说明在常环境中运行代码可干的活的大型扩展.这是指编译器在编译时必须计算的所有代码:常和静项的初值,数组长度,枚举判定值,常模板参数及可从(constfn)此类环境调用的函数. 引用静.当前,除了静项的初化器式外,禁止常环境引用静…...

承德做网站设计的/百度云资源链接分享群组

实现的思想&#xff1a; 1、当鼠标放在图片上面的时候触发mouseover mouseenter两个事件&#xff08;图片变得透明&#xff09;2、当鼠标离开图片的时候触发mouseleave mouseout两个事件&#xff08;图片变为不透明&#xff09; <!DOCTYPE html PUBLIC "-//W3C//DTD …...

网站建设的好处论文/seo优化师

提要光线在图形学中可以简单地用向量来表示&#xff1a;r(t) o td, o表示光线的出发点&#xff0c;d表示光线的方向&#xff0c;通常是单位向量&#xff0c;r表示光线在t时刻的位置。光线求交在图形学中有着非常重要的应用&#xff0c;比如Global Illumination,collision det…...

wordpress注册防骚挠/网站定制设计

什么是容器 容器是指容纳其他物品的工具&#xff0c;物体可以被放置在容器内&#xff0c;容器可以保护其中内容物&#xff1b; Linux容器发展之路 容器技术的概念最初出现在 2000 年&#xff0c;当时称为 FreeBSD jail&#xff0c;这种技术可将 FreeBSD 系统分区为多个子系统&a…...

做网站需要前置审批/百度快速排名软件下载

chatGPT基于所谓的大模型&#xff0c;这里有两个关键词一个是“大”&#xff0c;一个是“模型”&#xff0c;我们先看什么叫“模型”。所谓模型其实就是深度学习中的神经网络&#xff0c;后者由很多个称之为“神经元”基本单元组成。神经元是一种基础计算单元&#xff0c;它执行…...

建设网站的企业邮箱网站建设服务/新闻头条 今天

HTML5提供了许多新接口&#xff0c;其中最令人振奋的无疑是Websocket。正是它的存在令网络双向交互得以实现。使用Websocket对于客户端来说无疑十分简单。websocket提供了三个简单的函数&#xff0c;onopen,onclose以及onmessage&#xff0c;顾名思义&#xff0c;他们分别监听s…...

wordpress配置文件是/十大基本营销方式

time和datetime的区别 之前&#xff0c;我们已经介绍过了python中的datetime模块&#xff0c;time的功能在很大程度上和datetime比较类似&#xff0c;也是用于处理日期和时间的。但是如果你要处理日期的话&#xff0c;使用datetime要更好。因此建议不需要通过time来处理日期&a…...