- 博客(21)
- 收藏
- 关注
原创 实验报告二 分别用数据选择器和译码器设计全加器
将Decoder的三个输入引脚A2,A1,A0分别连接到全加器的输入变量A,B,Cin上,再将Decoder的输出引脚Y1,Y2,Y4,Y7连接到一个或门的输入引脚上,该或门的输出引脚即为全加器本位和S的输出,最后将Decoder的输出引脚Y3,Y5,Y6,Y7连接到另一个或门输入引脚上,该或门门的输出引脚即为进位位Cout的输出。当A=1,B=0时S=/Cin,所以D2=/Cin;将全加器的输入变量A,B分别连接到四选一选择器的地址输入端A1,A0,通过寻找到输入A,B,Cin与输出之间的关系实现降维。
2025-03-28 13:47:51
999
原创 实验报告一半加器及全加器构成及测试
最低位的相加用半加器实现,将最低位的两个数字作为半加器A,B的输入,产生本位S和向高位的进位C,然后将进位位C接入加法器作为Cin端的输入,再将本位的两个数字作为全加器A,B的输入,产生本位S和进位位Cout,同理每个加法器进位输入来自低位的进位输出,往后再接入两个全加器,最后输出最后一个全加器的进位位然后依次输出每个加法器的本位,即可得到两个四位二进制数相加的结果。由图(t)可知1010和0011通过串行加法器的相加结果为01100,与模拟的理论值相同,由此可知该串行加法器可实现两个四位二进制数的相加。
2025-03-24 14:49:26
1336
原创 SPFA算法——负权图且没有负环
SPFA算法其实是对Bellman-ford算法的优化,Bellman-ford算法更新最短路是采用的是遍历每一条边,找到最短的边进行更新d[v]=min(d[v],d[u]+w(u,v)),由 d[v]=min(d[v],d[u]+w(u,v))可知只有当 d[ u ]变小时才有可能更新,所以用一个队列存储每次变化的点,便于更新操作。
2025-03-12 00:10:26
462
原创 Bellman-Ford算法——求存在负权边的最短路问题或
这是 Bellman - Ford 算法的核心操作。对于每条边u→v,如果从源点s到u的已知最短距离加上边u→v的权重小于当前已知的从s到v的最短距离,那么就更新从s到v的最短距离为从s到u的最短距离加上边u→v的权重。即d[v]=min(d[v],d[u]+w(u,v)),其中d[v]表示从源点到顶点v的最短距离,w(u,v)表示边u→v的权重。:算法对图中的所有边进行n−1次松弛操作,其中n是图中顶点的数量。这是因为在一个没有负权回路的有向图中,从源点到任何一个顶点的最短路径最多包含n−1条边。
2025-03-05 17:09:46
525
原创 堆优化版的Dijkstra(适用于稀疏图)
与朴素版Dijkstra大致相同,只是在寻找距离最短的点时采用堆的方式寻找,使得每次寻找距离最短的点的时间复杂度变为O(1),循环n 次,总共进行n 次查找,所以总的寻找距离最短的点的时间复杂度为O(n),降低了时间复杂度。对于与顶点u相邻的所有顶点v,如果通过顶点u到达顶点v的距离更短,即d[u]+w(u,v)<d(v),其中w(u,v)是边的权重,则更新顶点的距离d[v]=d[u]+w(u,v)。2.用for循环循环n次,找到不在S中的距离最短的点t,然后加入S,用t更新其他点的距离。
2025-02-25 18:43:45
609
原创 最短路问题(Dijkstra算法)
在一个带权图中,给定一个源点,求该源点到图中其他所有顶点的最短路径长度及路径,这就是单源最短路问题。这里的带权图可以是有向图,也可以是无向图,图中的边权重通常表示距离、时间、费用等实际意义的度量。(只有一个起点):在一个图中,存在多个源点和多个汇点,要确定从每个源点到每个汇点的最短路径,这就是多源汇最短路问题。这里的图同样可以是有向图或无向图,边权重代表着类似距离、成本等实际度量。
2025-02-24 21:58:17
513
原创 差分和前缀和(一维和二维)
假设要对数列的某个区间进行统一的增减操作,比如都加上。如果直接对原数列进行操作,时间复杂度较高。但利用差分,只需要对差分数列的加上,对减去(如果不越界),最后通过差分数列还原原数列时,就可以快速实现区间修改操作,将时间复杂度从优化为。
2025-02-23 14:09:33
900
原创 拓扑排序(宽度优先搜索的应用)
设是一个有向无环图(Directed Acyclic Graph,DAG),拓扑序列是对图中所有顶点的一种排序,使得对于图中的任意一条有向边,在这个排序中顶点都出现在顶点之前。也就是说,如果存在从顶点到顶点的路径,那么在拓扑序列中一定排在的前面。换句话说当我们把一个图按照拓扑排列后,它所有的边都是从前指向后的。:对于有向图中的一个顶点,入度是指以该顶点为终点的有向边的数量。简单来说,就是有多少条边指向这个顶点。:对于有向图中的一个顶点,出度是指以该顶点为起点的有向边的数量。即从这个顶点出发的边的数量。
2025-02-19 18:33:09
762
原创 洛谷P1238走迷宫(dfs)
这道题可以用深度优先搜索来解,首先定义一个int型的二维数组g[ N ][ N ]来存储迷宫数据,一个bool类型的数组visited[N][N]标记是否被访问过,一个bool类型的变量是否存在路径。可通过的条件有:该方向上的点在合法范围内,可以通行(g[nx][ny]==1),并且未被访问过,若符合条件则标记为已访问,递归的方式往下搜索。然后定义两个一维数组分别表示四个方向向量的x,y,用一个循环一一判断四个方向是否可通过,(四个方向上点的坐标表示为nx=x+dx[i],ny=y+d[i];
2025-02-19 15:33:30
355
原创 树和图的深度优先遍历和广度优先遍历
树是一种特殊的图,树的存储也可看作图的存储,图又分为有向图(边是有方向的)和无向图(边是无方向的),无向图可以看成双向的有向图,因此图的存储可简化成有向图的存储。
2025-02-18 15:20:48
626
原创 n-皇后(DFS的两种搜索方式)+走迷宫(BFS)(超详细,一看就懂)
n−皇后问题是指将 n 个皇后放在 n×n的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。给定一个 n×m 的二维整数数组,用来表示一个迷宫,数组中只包含 0 或 1,其中 0 表示可以走的路,1表示不可通过的墙壁。定义三个bool类型数组col[ ],dg[ ],udg[ ],分别存放第I个元素的列,对角线,反对角线上是否有皇后。每个解决方案占 n行,每行输出一个长度为 n的字符串,用来表示完整的棋盘状态。现在给定整数 n,请你输出所有的满足条件的棋子摆法。
2025-02-17 11:25:32
607
原创 深度优先搜索(DFS)+ 宽度优先搜索(BFS)
深度优先搜索就像在一个迷宫中探索,从起始点开始,尽可能深入地沿着一条路径走下去,直到无法继续或者达到目标节点,然后再回溯到前一个节点,继续探索其他路径,直到遍历完所有可达节点或找到目标。
2025-02-16 21:14:59
681
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人