一个网站有多大营口软件开发

web/2025/9/27 7:23:27/文章来源:
一个网站有多大,营口软件开发,南昌公司做网站,温州市人才市场招聘网最新招聘目录 图的遍历概念#xff1a; 图的广度优先遍历#xff08;BFS#xff09;#xff1a; 代码实现如下#xff1a; 测试如下#xff1a; 注意#xff1a; 图的深度优先遍历#xff08;DFS#xff09;#xff1a; 代码实现如下#xff1a; 测试如下#xff1…目录 图的遍历概念 图的广度优先遍历BFS 代码实现如下 测试如下 注意 图的深度优先遍历DFS 代码实现如下 测试如下 总代码 结语 图的遍历概念 给定一个图G和其中任意一个顶点v0从v0出发沿着图中各边访问图中的所有顶点且每个顶点仅被遍历一次。遍历即对结点进行某种操作的意思。由于考试大多考邻接矩阵(GraphByMatrix)故下面的遍历都是用邻接矩阵(GraphByMatrix)不是邻接表(GraphByNode)。 图的广度优先遍历BFS 广度优先遍历类似于我们前面所学二叉树的层序遍历一层一层的走故可以使用队列来模拟实现。 比如现在有三个抽屉每个抽屉包含一个红色盒子红色盒子中又包含一个绿色盒子所需东西在那个抽屉不清楚现在要将其找到广度优先遍历的做法是 1先将三个抽屉打开在最外层找一遍。 2将每个抽屉中红色的盒子打开再找一遍。 3最后将红色盒子中绿色盒子打开再找一遍。 直到找完所有的盒子注意每个盒子只能找一次不能重复找。 例如下图 该图的广度优先遍历过程如下 故其广度优先遍历的结果为ABCDEFGHI。 代码实现如下 1、初始化一个布尔类型数组visited默认所有顶点都没有被遍历到。 2、获取当前开始的顶点V 的下标。 3、定义一个队列存储当前需要遍历的顶点的下标。 4、取出当前队列的头部。 5、把当前的顶点的这一行都放到队列。 由于getIndexOfVarrayVmatrix在上一篇文章中已经非常详细的描述过故这里我只解释其作用如若需要源码和更加详细的解释请友友前往图的存储结构  1geiIndexOfV 获取顶点元素在其数组中的下标 。 2arrayV 顶点元素的一维数组。 3matrix 利用matrix二维数组来存储顶点之间边的权重。 /*** 广度优先遍历* param v*/public void bfs(char v){//1、初始化一个布尔类型数组默认所有顶点都没有被遍历到boolean[] visited new boolean[arrayV.length];//2、获取当前开始的顶点V的下标int index getIndexOfV(v);//3、定义一个队列存储当前需要遍历的顶点的下标QueueInteger qu new LinkedList();qu.offer(index);//起点放进来while(!qu.isEmpty()){//4、取出当前队列的头部int top qu.poll();System.out.print(arrayV[top]:- );visited[top] true;//5、把当前的顶点的这一行都放到队列for(int i 0;i arrayV.length;i){//如果这一行的i下标不等于MAX_VALUE并且也没有被访问过if(matrix[top][i] ! Integer.MAX_VALUE visited[i] false){qu.offer(i);//注意防止重复打印visited[i] true;}}}System.out.println(null);} 测试如下 测试代码均围绕下图进行 遍历结果为BACD显然符合我们的预期。  注意 下面话红线的地方不能省去。 如若省去会发生重复遍历例如 发生了DD的重复打印。 那为什么会发生重复打印呢这是因为在C出队时D已经在队列中了但是其还是false故C出队会再次把D入队这样就会重复打印。具体过程如下动图 解决方法在入队时一起把元素对应下标的visited数组设置为false。 为了方便友友调试下面将测试代码给出 public static void main(String[] args) {GraphByMatrix graph new GraphByMatrix(4,true);char[] array {A,B,C,D};graph.initArrayV(array);graph.addEdge(A,B,1);graph.addEdge(A,D,1);graph.addEdge(B,A,1);graph.addEdge(B,C,1);graph.addEdge(C,B,1);graph.addEdge(C,D,1);graph.addEdge(D,A,1);graph.addEdge(D,C,1);graph.bfs(B);} 图的深度优先遍历DFS 图的深度优先遍历类似于前面所学二叉树的前序遍历有路就走走完没路了再回退使用递归来实现。 比如现在有三个抽屉每个抽屉包含一个红色盒子红色盒子中又包含一个绿色盒子所需东西在那个抽屉不清楚现在要将其找到深度优先遍历的做法是 1先将第一个抽屉打开在最外层找一遍。 2将第一个抽屉中红色的盒子打开在红色箱子里找一遍。 3将红色盒子中绿色盒子打开在绿箱子里找一遍。 4递归查找剩余两个箱子。 深度优先遍历将一个抽屉一次性遍历完包括该抽屉中包含的小盒子再去递归遍历其它盒子。 其过程如图所示 其深度优先遍历结果为ABEGCFDHI。 代码实现如下 实现一个方法dfschild来进行递归为什么不用dfs直接递归呢这是因为如果直接把dfs递归哪visited会一直被开辟堆上的内存占用太大要把visited设置在dfs外面才行。 部分流程和前面所说的广度优先遍历类似关于getIndexOfVarrayVmatrix在广度优先遍历那已解释故这里不再过多描述。 /*** 给定顶点从顶点处开始进行深度优先遍历* param v*/public void dfs(char v){//1、初始化一个布尔类型数组默认所有顶点都没有被遍历到boolean[] visited new boolean[arrayV.length];//2、获取当前开始的顶点V 的下标int index getIndexOfV(v);//3、开始从index位置进行深度遍历dfsChild(index,visited);System.out.print(null);}/*** 从index位置开始深度优先遍历* param index* param visited*/private void dfsChild(int index,boolean[] visited){System.out.print(arrayV[index]:- );visited[index] true;//当前index位置的所有的连接点都在这一行for(int i 0;i arrayV.length;i){//如果这一行的i下标不等于0并且也没有被访问过if(matrix[index][i] ! Integer.MAX_VALUE visited[i] false){dfsChild(i,visited);}}} 测试如下 遍历结果为BADC显然符合我们的预期。 总代码 import java.sql.SQLOutput; import java.util.Arrays; import java.util.Queue; import java.util.LinkedList; public class GraphByMatrix {private char[] arrayV;//存放顶点·private int[][] matrix;//存放边private boolean isDirect;//是否是有向图public GraphByMatrix(int size,boolean isDirect){arrayV new char[size];matrix new int[size][size];for(int i 0;i size;i){Arrays.fill(matrix[i],Integer.MAX_VALUE);}this.isDirect isDirect;}/*** 初始化* param array 顶点集合*/public void initArrayV(char[] array){for(int i 0;i array.length;i){arrayV[i] array[i];}}/**** param v1 起始* param v2 终点* param weight 权值*/public void addEdge(char v1,char v2,int weight){int index1 getIndexOfV(v1);int index2 getIndexOfV(v2);matrix[index1][index2] weight;if(!isDirect){matrix[index2][index1] weight;}}/*** 获取顶点元素在其数组中的下标* param v* return*/public int getIndexOfV(char v){for(int i 0;i arrayV.length;i){if(v arrayV[i]){return i;}}return -1;}/*** 获取顶点的度* param v* return*/public int getDevOfV(char v){int indexV getIndexOfV(v);int count 0;for(int i 0;i arrayV.length;i){if(matrix[indexV][i] ! Integer.MAX_VALUE){count;}}if(isDirect){for(int i 0;i arrayV.length;i){if(matrix[i][indexV] ! Integer.MAX_VALUE){count;}}}return count;}public void printGraph(){for(int i 0;i arrayV.length;i){System.out.print(arrayV[i] );}System.out.println();for(int i 0;i matrix.length;i){for(int j 0;j matrix[i].length;j){if(matrix[i][j] Integer.MAX_VALUE) {System.out.print(∞ );}else {System.out.print(matrix[i][j] );}}System.out.println();}}//广度优先遍历/*** 广度优先遍历* param v*/public void bfs(char v){//1、初始化一个布尔类型数组默认所有顶点都没有被遍历到boolean[] visited new boolean[arrayV.length];//2、获取当前开始的顶点V的下标int index getIndexOfV(v);//3、定义一个队列存储当前需要遍历的顶点的下标QueueInteger qu new LinkedList();qu.offer(index);//起点放进来while(!qu.isEmpty()){//4、取出当前队列的头部int top qu.poll();System.out.print(arrayV[top]:- );visited[top] true;//5、把当前的顶点的这一行都放到队列for(int i 0;i arrayV.length;i){//如果这一行的i下标不等于MAX_VALUE并且也没有被访问过if(matrix[top][i] ! Integer.MAX_VALUE visited[i] false){qu.offer(i);//注意防止重复打印 // visited[i] true;}}}System.out.println(null);}//图的深度优先遍历/*** 给定顶点从顶点处开始进行深度优先遍历* param v*/public void dfs(char v){//1、初始化一个布尔类型数组默认所有顶点都没有被遍历到boolean[] visited new boolean[arrayV.length];//2、获取当前开始的顶点V 的下标int index getIndexOfV(v);//3、开始从index位置进行深度遍历dfsChild(index,visited);System.out.print(null);}/*** 从index位置开始深度优先遍历* param index* param visited*/private void dfsChild(int index,boolean[] visited){System.out.print(arrayV[index]:- );visited[index] true;//当前index位置的所有的连接点都在这一行for(int i 0;i arrayV.length;i){//如果这一行的i下标不等于0并且也没有被访问过if(matrix[index][i] ! Integer.MAX_VALUE visited[i] false){dfsChild(i,visited);}}} }结语 其实写博客不仅仅是为了教大家同时这也有利于我巩固自己的知识点和一个学习的总结由于作者水平有限对文章有任何问题的还请指出接受大家的批评让我改进如果大家有所收获的话还请不要吝啬你们的点赞收藏和关注这可以激励我写出更加优秀的文章。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/81217.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蒲县网站建设销售管理系统排名

一. 内容简介 韩老师多目标优化:多目标粒子群算法 视频: 【2022.2.5韩老师十七课时(中)多目标优化:多目标粒子群算法】 https://www.bilibili.com/video/BV1eS4y157Xg/?share_sourcecopy_web&vd_source7b377d4a833a67013df5…

网站开发概述福建建设执业资格中心网站

Python中的堆(Heap):高级数据结构解析 堆是一种基于树结构的数据结构,具有高效的插入和删除操作。在本文中,我们将深入讲解Python中的堆,包括堆的基本概念、类型、实现方式、应用场景以及使用代码示例演示…

网站建设中 html5 模板下载推广引流的方法

1.什么是IOCP IOCP(Input Output Completion Port)输入输出完成端口。其实就是基于重叠I/O的一种改进的模型。 重叠I/O具有缺点:重复调用非阻塞模式的accpet函数和以进入alertablewait状态为目的的SleepEx函数会影响程序性能。 而IOCP提供…

洛阳有哪些做网站的公司wordpress只显示置顶文章

第十二届蓝桥杯省赛Java B组真题 编程题 1. 杨辉三角问题描述 2. 时间显示问题描述 3. 双向排序问题描述 4. 括号序列问题描述分析 5.砝码称重分析 1. 杨辉三角 问题描述 著名的杨辉三角形,按从上到下、从左到右的顺序把所有数排成一列,可以得到如下数…

音箱厂家东莞网站建设专做农产品跨境的网站有

很久没有发帖了,很是惭愧,因此给各位使用EXT.NET的朋友献上一份礼物。 本篇主要讲述页面设计与效果,下篇将讲述编码并提供源码下载。 系统首页设计往往是个难点,因为往往要考虑以下因素: 重要通知系统功能菜单快捷操作…

北京中小企业网站建设外贸服装商城网站建设

昨天在班里测试了下,检测他们数据库学的怎么样,看他们平时在课堂上的互动挺棒。看了下题,不是很难,满怀着愉悦的心情去打印了50份,挨个分发下去,由于我18级那边有课要上,所以这边的考试就辛苦王…

WordPress里面自定义功能优化就是开除吗

1、命令的基本格式 对服务器来讲,图形界面会占用更多的系统资源,而且会安装更多的服务、开放更多的端口,这对服务器的稳定性和安全性都有负面影响。其实,服务器是一个连显示器都没有的家伙,要图形界面干什么&#xff…

怎么设置自己的网站安徽优化网站

19级青鸟3班 刘文瑞以前因为经常玩游戏的原因,导致我对软件特别感兴趣,但是由于学习到的东西不多,经常是在玩游戏,真正能运用到计算机上的知识实在是少的可伶。像是代码之类的东西,以前只是听说过,但是一点…

合肥高端网站建设cnfg冰雪复古传奇手游官网

四、音乐播放器 任务要求: 设计制作一个简易音乐播放器(通过手柄板上的蜂鸣器发声,播放2到4首音 乐),同时LED模块闪烁,给人视、听觉美的感受。 评分细则: 按下播放按键P15开始播放音乐&#x…

源码制作网站广州白云区最新新闻

priority_queue模拟实现 1. priority_queue介绍2. priority_queue使用2.1 priority_queue显示定义2.2priority_queue接口使用 3. 仿函数4. priority_queue模拟实现4.1 向上调整算法4.2 向下调整算法4.3 实现priority_queue的接口4.4 使用[仿函数](https://legacy.cplusplus.com…

营销软件站放单网站

Glance是为虚拟机的创建提供镜像的服务,我们基于Openstack是构建基本的IaaS平台对外提供虚拟机,而虚拟机在创建时必须为选择需要安装的操作系统,Glance服务就是为该选择提供不同的操作系统镜像。Glance提供Restful API可以查询虚拟机镜像的me…

保定模板建站平台如何去除痘痘有效果

cognito在本文中,我们将研究使用OAuth协议通过Amazon Cognito对单页应用程序(使用Vue.js构建)进行身份验证。 在上一篇文章中,我们将服务器端应用程序与Amazon Cognito集成在一起。 搭建单页应用程序 我们将使用vue-cli创建一个空…

专做健身餐的网站wordpress 说说碎语

每日OJ —— 144. 二叉树的前序遍历 1.题目:144. 二叉树的前序遍历2.方法讲解2.1.算法讲解2.2.代码实现2.3.提交通过展示 1.题目:144. 二叉树的前序遍历 2.方法讲解 2.1.算法讲解 1.首先如果在每次每个节点遍历的时候都去为数组开辟空间,这样…

网站建设从哪入手免费word在线编辑

一、创建vue项目步骤 要创建一个Vue Element UI的项目,你可以按照以下步骤进行操作: 1.确保你已经安装了Node.js和npm(Node.js的包管理器)。你可以在命令行中运行以下命令来检查它们是否已经安装: node -vnpm -v2.使…

中国十大网站排名wordpress is admin

目标 我们学习正则化之前应该先了解我们为什么要用正则化 。正则化解决了什么问题 。我们讲正则化之前 ,先了解一个概念–》过拟合 过拟合 数据增强 L1和L2正则化 Dropout 注意:Dropout是不适合用在卷积神经网络的 提前终止 一般的做法是:记…

网站技术可行性网站怎么做数据转移

北京电子科技学院(BESTI) 实 验 报 告 封 面 课程:信息安全系统设计基础 班级:1452 姓名: 黄亚奇 祁玮 学号: 20145222 20145213 成绩: 指导教师:娄嘉鹏 实验日期:2016.1…

做的好的农产品网站微企点做的网站怎么去底下的

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…

微信网站是多少钱一年wordpress书签插件

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 【翻译】再见, Clean Code!正文那是一个深夜次日早晨这只是一个阶段 【翻译】再见…

天津外贸营销型网站建设怎样做酒店网站ppt

作者:fyupeng 技术专栏:☞ https://github.com/fyupeng 项目地址:☞ https://github.com/fyupeng/distributed-blog-system-api 留给读者 一、介绍 当由于某个业务id发生死循环一直在运行,那么再来一笔相同的业务id执行相同操作&…

汇款账号 网站建设如何让百度收录网站

记录一下成长的历程吧! 刚开始写,没什么文笔,也没什么技术含量,可能主要的是纪录一下平常工作学习中遇到的问题,以及解决的办法吧。或者只有问题,没有解决办法。 前两天项目中遇到的一个问题,由…