Java-10

article/2025/9/1 3:25:24

学习来源:日撸 Java 三百行(31-40天,图)_闵帆的博客-CSDN博客

33 图的广度优先遍历

33.1与树的广度优先遍历类似。

33.2为每个核心方法写一个测试方法。这叫单元测试。

代码:

/********************** Breadth first traversal.* * @param paraStarIndex The star index.* @return The sequence of the visit.********************/public String breadthFirstTraversal(int paraStartIndex) {CircleObjectQueue tempQueue = new CircleObjectQueue();String resultString = "";int tempNumNodes = connectivityMatrix.getRows();boolean[] tempVisitedArray = new boolean[tempNumNodes];// Initialize the queue.// visit before enqueue.tempVisitedArray[paraStartIndex] = true;resultString += paraStartIndex;tempQueue.enqueue(new Integer(paraStartIndex));// Now visit the rest of the graph.int tempIndex;Integer tempInteger = (Integer)tempQueue.dequeue();while (tempInteger != null) {tempIndex = tempInteger.intValue();//Enqueue all the its unvisited neighbors.for (int i = 0; i < tempNumNodes; i++) {if (tempVisitedArray[i]) {continue; // Already visited.} // Of ifif (connectivityMatrix.getData()[tempIndex][i] == 0) {continue; // Not directly connected.} // Of if// Visit before enqueue.tempVisitedArray[i] = true;resultString += i;tempQueue.enqueue(new Integer(i));} // Of for i//Take out one from the head.tempInteger = (Integer)tempQueue.dequeue();} // Of whilereturn resultString;} // Of breadthFirstTraversal/********************** Unit test for breadthFirstTraversal.********************/public static void breadthFistTraversalTest() {// Test an undirected graph.int[][] tempMatrix = { { 0, 1, 1, 0 }, { 1, 0, 0, 1 }, { 1, 0, 0, 1}, { 0, 1, 1, 0 } };Graph tempGraph = new Graph(tempMatrix);System.out.println(tempGraph);String tempSequeuece = "";try {tempSequeuece = tempGraph.breadthFirstTraversal(2);} catch (Exception ee) {System.out.println(ee);} // Of trySystem.out.println("The breadth first order of visit: " + tempSequeuece);} // Of breadthFirstTraversalTest/************************ The entrance of the program.* * @param args*            Not used now.**********************/public static void main(String[] args) {System.out.println("Hello!");Graph tempGraph = new Graph(3);System.out.println(tempGraph);// Unit test.getConnectivityTest();breadthFistTraversalTest();} // Of main
} // Of class Graph

截图:

 

34 图的深度优先遍历

34.1 与二叉树的深度优先遍历类似。

34.2 while (true),循环的退出条件是栈为空。

代码:

    /********************** Depth first traversal.* * @param paraStartIndex The start index.* @return The sequenen of visit.********************/public String depthFirstTraversal(int paraStartIndex) {ObjectStack tempStack = new ObjectStack();String resultString = "";int tempNumNodes = connectivityMatrix.getRows();boolean[] tempVisitedArray = new boolean[tempNumNodes];// Initialize the stack.// Visit before push.tempVisitedArray[paraStartIndex] = true;resultString += paraStartIndex;tempStack.push(new Integer(paraStartIndex));System.out.println("Push " + paraStartIndex);System.out.println("Visited " + resultString);// Now visit the rest of graph.int tempIndex = paraStartIndex;int tempNext;Integer tempInteger;while (true) {// Find an unvisited neighbor.tempNext = -1;for (int i = 0; i < tempNumNodes; i++) {if (tempVisitedArray[i]) {continue; // Aleady visited.} // Of ifif (connectivityMatrix.getData()[tempIndex][i] == 0) {continue; // Not directly connected.} // Of if// Visit this one.tempVisitedArray[i] = true;resultString += i;tempStack.push(new Integer(i));System.out.println("Push " + i);tempNext = i;// One is enough.break;} // Of for iif (tempNext == -1) {// No unvisited neighbor. Backtracking to the last stored in the stack.// Attention: This is the terminate condition!if (tempStack.isEmpty()) {break;} // Of iftempInteger = (Integer)tempStack.pop();System.out.println("Pop " + tempInteger);tempIndex = tempInteger.intValue();} else {tempIndex = tempNext;} // Of if} // Of whilereturn resultString;} // Of depthFirstTraversal/********************** Unit test for depthFirstTraversal.********************/public static void depthFirstTraversalTest() {// Test an undirected graph.int[][] tempMatrix = { { 0, 1, 1, 0 }, { 1, 0, 0, 1 }, { 1, 0, 0, 0}, { 0, 1, 0, 0 } };Graph tempGraph = new Graph(tempMatrix);System.out.println(tempGraph);String tempSequeue = "";try {tempSequeue = tempGraph.depthFirstTraversal(0);} catch (Exception ee) {System.out.println(ee);} // Of try.System.out.println("The depth first order of visit: " + tempSequeue);} // Of depthFirstTraversalTest/************************ The entrance of the program.* * @param args*            Not used now.**********************/public static void main(String[] args) {System.out.println("Hello!");Graph tempGraph = new Graph(3);System.out.println(tempGraph);// Unit test.getConnectivityTest();breadthFistTraversalTest();depthFirstTraversalTest();} // Of main

截图:

 

35 图的m着色问题

35.1 经典的回溯算法。

35.2 调拭时注意 +1, -1 之类的下标控制。

35.3 单独写一个冲突检测方法。

代码:

/********************** Coloring. Output all possible schemes.* * @param paraNumColors The number of colors.********************/public void coloring(int paraNumColors) {// Step 1. Initialize.int tempNumNodes = connectivityMatrix.getRows();int[] tempColorScheme = new int[tempNumNodes];Arrays.fill(tempColorScheme, -1);coloring(paraNumColors, 0, tempColorScheme);} // Of coloring/********************** Coloring. Output all possible schemes.* * @param paraNumColors The number of colors.* @param paraCurrentNumNodes The number of nodes that have been colored.* @param paraCurrentColoring The array recording the coloring scheme.********************/public void coloring(int paraNumColors, int paraCurrentNumNodes, int[] paraCurrentColoring) {// Step 1. Initialize.int tempNumNodes = connectivityMatrix.getRows();System.out.println("Coloring: paraNumColors = " + paraNumColors + ", paraCurrentNumNodes = "+ paraCurrentNumNodes + ", paraCurrentColoring" + Arrays.toString(paraCurrentColoring));// A complete scheme.if (paraCurrentNumNodes >= tempNumNodes) {System.out.println("Find one: " + Arrays.toString(paraCurrentColoring));return;} // Of if// Try all possible colors.for (int i = 0; i < paraNumColors; i++) {paraCurrentColoring[paraCurrentNumNodes] = i;if (!colorConflict(paraCurrentNumNodes + 1, paraCurrentColoring)) {coloring(paraNumColors, paraCurrentNumNodes + 1, paraCurrentColoring);} // Of if} // Of for i} // Of coloring/********************** Coloring conflict or not. Only compare the current last node with previous* ones.* * @param paraCurrentNumNodes The current number of nodes.* @param paraColoring        The current coloring scheme.* @return Conflict or not.********************/public boolean colorConflict(int paraCurentNumNodes, int[] paraColoring) {for (int i = 0; i < paraCurentNumNodes - 1; i++) {// No direct connection.if (connectivityMatrix.getValue(paraCurentNumNodes - 1, i) == 0) {continue;} // Of ifif (paraColoring[paraCurentNumNodes - 1] == paraColoring[i]) {return true;} // Of if} // Of for ireturn false;} // Of colorConflict/********************** Coloring test.********************/public static void coloringTest() {int[][] tempMatrix = { { 0, 1, 1, 0 }, { 1, 0, 0, 1 }, { 1, 0, 0, 0}, { 0, 1, 0, 0 } };Graph tempGraph = new Graph(tempMatrix);//tempGraph.coloring(2);tempGraph.coloring(3);} // Of coloringTest/************************ The entrance of the program.* * @param args*            Not used now.**********************/public static void main(String[] args) {System.out.println("Hello!");Graph tempGraph = new Graph(3);System.out.println(tempGraph);// Unit test.getConnectivityTest();breadthFistTraversalTest();depthFirstTraversalTest();coloringTest();} // Of main

截图:


http://chatgpt.dhexx.cn/article/HpBvulUM.shtml

相关文章

Java 10 新特性解读

前言  2018年3月21日&#xff0c;Oracle官方宣布Java10正式发布。  需要注意的是 Java 9 和 Java 10 都不是 LTS (Long-Term-Support) 版本。和过去的 Java 大版本升级不同&#xff0c;这两个只有半年左右的开发和维护期。而未 来的 Java 11&#xff0c;也就是 18.9 LTS&am…

【小家java】java10新特性(简述十大新特性) 小步迭代

相关阅读 【小家java】java5新特性&#xff08;简述十大新特性&#xff09; 重要一跃 【小家java】java6新特性&#xff08;简述十大新特性&#xff09; 鸡肋升级 【小家java】java7新特性&#xff08;简述八大新特性&#xff09; 不温不火 【小家java】java8新特性&#xff0…

IP地址与端口Port

IP地址 IP地址&#xff1a;InetAddress 唯一定位一台网络上的计算机127.0.0.1 &#xff08;本机localhost&#xff09; IP地址的分类 IPv4&#xff1a;网际协议版本4&#xff08;英语&#xff1a;InternetProtocolversion4&#xff0c;IPv4&#xff09;&#xff0c;又称互联网…

Port端口

一、端口号的定义 端口表示当前计算机上的一个进程。 例如&#xff1a;手机开着 微信 王者 QQ 这时候我们使用QQ给对方发送一条消息&#xff0c;这时我们要知道对方的ip地址&#xff0c;这样才能到达指定的位置&#xff0c;但是消息到了指定位置&#xff0c;又怎么知道这个消…

linux普通用户使用1024以下的端口(80)

linux对于非root权限用户不能使用1024以下的端口&#xff0c;对于一些服务&#xff0c;过高的权限&#xff0c;会带来一定的风险。那么对于低权限的用户如何对外开放1024以下的端口。我这里找到几种办法并且亲测可行 首先搭建环境centos7 账户tengine没有sudo 权限 1.nginx 等…

价值连城的神站:广西图书馆的电子资源(视频、书、期刊...)

网站地址&#xff1a;http://wap.gxlib.org.cn:9080/ermsClient/browse.do广西壮族自治区图书馆的电子资源平台&#xff0c;该平台开放注册&#xff0c;注册登录成功后可以免费使用平台内的所有资源。该平台的资源库异常丰富&#xff0c;可以说是在线图书馆该有的资源这里都有了…

IMC美丽链:区块链与世界上最大的酿酒商的恩怨情仇!

酒业巨头Anheuser-Busch InBev旨在通过区块链技术改变数字广告供应链。 现在我们在网上&#xff0c;到处都可以看到广告。但是其实很多都是欺诈信息&#xff0c;比如我们上网站购物&#xff0c;可能就会遇到有欺诈广告&#xff0c;导致我们买到假货。 或者是我们在网上搜索&a…

2021年中国苹果行业产业链分析:上下游市场稳定,苹果行业市场运行情况平稳增长 [图]

一、概述 苹果目前是世界四大水果之首&#xff0c;苹果产业链上游主要由种子、肥料、农药等构成&#xff0c;下游主要加工成果脯、苹果干、苹果酒和苹果醋等。 苹果产业链 资料来源&#xff1a;智研咨询整理 二、上游产业 化肥是农业生产中一种十分常见的生产资料&#xff0c;…

这两个世界此次对决之后,“互联网+”与数字化真的要来了

昨天&#xff0c;微信上一个朋友忧心忡忡的问了我一个问题&#xff0c;“这次疫情对传统企业影响巨大&#xff0c;好多企业迟迟不能复工&#xff0c;面临生死存亡的挑战。你觉得这对于我们这样的数字化转型服务的公司来说&#xff0c;会有什么影响呢&#xff1f;” 我的回答是…

说出来你可能不信,现在连酒厂都在招算法工程师

原创&#xff1a;HyperAI超神经 关键词&#xff1a;啤酒 智能酿造 根据数据显示&#xff0c;从 1960 年代至今&#xff0c;啤酒的受欢迎程度每年增加&#xff0c;逐渐成为了消耗量最大的饮品之一。 到 2017 年的统计数据&#xff0c;中国人均啤酒年消耗达到了 60 瓶之多。…

中国企业软件必然革命世界企业软件

&#xff08;1&#xff09;先扯点没用的&#xff1a;宏观经济环境 三架马车&#xff1a;出口、固定资产投资、消费。 我丝毫不怀疑中国会在2035年&#xff0c;GDP超过美国。也就是说&#xff0c;我们总体来说&#xff0c;坐在中国这艘上升发展的飞机上&#xff0c;享受着红利。…

[机器学习笔记] 用Python分析:红葡萄酒质量分析(数据探索)

用Python分析&#xff1a;红葡萄酒质量分析&#xff08;数据探索&#xff09; 数据集&#xff1a;winemag-data_first150k.csv 先来导入数据 import numpy as np import pandas as pd import seaborn as sns import matplotlib.pyplot as plt import statsmodels.api as sm …

区块链 - 区块链基础知识:交易哈希链

区块链 - 区块链基础知识&#xff1a;深入了解交易哈希链 本文的主题是执行有关交易哈希链、 交易池的角色以及 一个最长的区块链如何永远占据主导。 讨论的细节包括以下内容&#xff1a; 事务哈希链的实现细节 交易池的角色 为什么需要共识算法 PoW vs PoS为什么最长的区块…

2018世界杯热点运营活动案例剖析

一、产品与活动概况 此次选取的产品除了本品同程艺龙(微信火车票机票)外,还包括全民应用支付宝和美团。其中本品世界杯主题的运营活动是“支持你的主队-赢球衣”,支付宝的是“猜世界杯-赢蚂蚁积分”,美团的是“燃烧看球-竞猜赢百万大奖”。 1. 同程艺龙:“支持你的主队…

翼次元空间资讯:区块链互联网酒业“心直酒快”有动作

本文由BitCOO、4COO全球运营官社区网络中国区节点与TokenRiseValueBoost | Chain产业链、FUND、Value与BrandFin品牌价值燃焕力中心、FintechX金融科技发展中心、孵化器WiTx链智星云 翼次元空间 Ai&Hi_AiHi/AiHiX研究中心授权发布 —— 由FinRise奋睿资本投资、翼次元空间孵…

黄铭钧:院长创业与酒

采访 | Rosalie 录音整理 | 储鑫垚 作者 | 朱芳文、刘韧 来源 | 链英雄 黄铭钧的自画像 “仗义&#xff1f;什么仗义&#xff1f;” “像乔峰&#xff1f;不可能。” 新加坡科学院院士&#xff0c;新国大计算机学院前院长、世界顶级数据库专家黄铭钧&#xff08; Beng Chin Ooi…

解密小米生态链:从构建到定义产品

1990年的雷军 互联网界有这样一种共识&#xff1a;十亿美元做产品&#xff0c;百亿美元做平台&#xff0c;千亿美元做生态。 纵观当前中国互联网企业&#xff0c;真正能够称得上形成生态的企业不过ATM三家而已&#xff0c;这也是为什么我相信小米值1000亿美金。 每一波互联网…

链读推荐:从瓷砖到生成式 NFT

Erick Calderon&#xff0c;又名“Snowfro”&#xff0c;一年前作为NFT生成艺术平台Art Blocks的创建者一举成名。但他的加密之旅是一个迂回的过程。 在与父亲一起创立的瓷砖公司工作了近十年后&#xff0c;Calderon在2013年第一次从他的兄弟那里听说了比特币。开车&#xff0…

我与世界杯足球那些事——世界杯征文

征文活动链接&#xff1a; https://bbs.csdn.net/topics/609601920 目录 第一次了解世界杯 第一次观看世界杯 世界杯主题曲 我最热爱的球员 今年世界杯 预测冠军 第一次了解世界杯 提起世界杯&#xff0c;我可能了解的比较晚一些&#xff0c;是在2014年的巴西世界杯的时…

数据分析案例-基于PCA主成分分析法对葡萄酒数据进行分析

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…