首页 > 编程语言 >每日一道算法题之建图

每日一道算法题之建图

时间:2024-12-10 23:43:53浏览次数:5  
标签:weight int 每日 算法 direct 建图 static edges1 public

import java.util.ArrayList;
import java.util.Arrays;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {

    public static int n = 11;
    public static int m = 31;

    // 矩阵-有方向-无权-权重默认都为1.
    public static int[][] graph_direct_noweight = new int[n][n];

    // 矩阵-有方向-有权
    public static int[][] graph_direct_weight = new int[n][n];

    // 矩阵-无方向(双向)-无权
    public static int[][] graph_nodirect_noweight = new int[n][n];

    // 矩阵-无方向(双向)-有权
    public static int[][] graph_nodirect_weight = new int[n][n];

    // 邻接表-有方向-无权

    public static ArrayList<ArrayList<Integer>> map_direct_noweight;

    // 邻接表-有方向-有权
    public static ArrayList<ArrayList<int[]>> map_direct_weight = new ArrayList<>();

    // 邻接表-无方向-无权
    public static ArrayList<ArrayList<Integer>> map_nodirect_noweight;

    // 邻接表-无方向-有权
    public static ArrayList<ArrayList<int[]>> map_nodirect_weight;

    public static void build(int n) {

        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n; j++) {
                graph_direct_weight[i][j] = 0;
            }
        }
        map_direct_weight.clear();
        for (int i = 0; i <= n; i++) {
            map_direct_weight.add(new ArrayList<int[]>());
        }

    }

    public static void main(String[] args) {
        // 理解了带权图的建立过程,也就理解了不带权图
        // 点的编号为1...n
        // 例子1自己画一下图,有向带权图,然后打印结果
        int n1 = 4;
        int[][] edges1 = { { 1, 3, 6 }, { 4, 3, 4 }, { 2, 4, 2 }, { 1, 2, 7 }, { 2, 3, 5 }, { 3, 1, 1 } };
        build(n1);
        directGraph(edges1);
        traversal(n1);
    }

    private static void traversal(int n1) {
        System.out.println("邻接矩阵: 遍历图");
        for (int i = 1; i <= n1; i++) {
            for (int j = 1; j <= n1; j++) {
                if (graph_direct_weight[i][j] != 0) {
                    System.out.println(i + " to " + j + " weight : " + graph_direct_weight[i][j]);
                }
            }
        }

        System.out.println("邻接表: 遍历图");
        for (int i = 1; i <= n1; i++) {
            ArrayList<int[]> array = map_direct_weight.get(i);
            for (int[] js : array) {
                System.out.println(i + " to " + js[0] + " weight : " + js[1]);
            }

        }
    }

    private static void directGraph(int[][] edges1) {
        for (int i = 0; i < edges1.length; i++) {
            // 邻接矩阵-带权重-有方向
            graph_direct_weight[edges1[i][0]][edges1[i][1]] = edges1[i][2];
            // 邻接表-带权重-有方向
            map_direct_weight.get(edges1[i][0]).add(new int[] { edges1[i][1], edges1[i][2] });
        }
    }

}

标签:weight,int,每日,算法,direct,建图,static,edges1,public
From: https://www.cnblogs.com/clllll/p/18598365

相关文章

  • 时间序列数据预测分类算法
    1.时间序列基础概念定义与特征时间序列数据是一系列按时间顺序排列的观测值,反映了系统随时间变化的状态。其关键特征包括季节性、趋势性和周期性,分别体现数据随时间呈现的规律性波动、长期发展方向和固定周期内的变化模式。时间序列分析旨在揭示这些内在特性,为预测建模......
  • 聚类算法的种类
    定义与原理聚类算法是一种无监督学习方法,旨在揭示数据集中的内在结构。它通过计算样本间的相似性,将相似对象自动归类到同一组中,无需预先标记数据。这种方法的核心在于选择合适的相似度量,如欧氏距离,以捕捉数据间的关系。聚类过程通常涉及迭代优化目标函数,如最小化簇内距离之......
  • 【唐叔学算法】第12天:回溯算法-探索所有可能的旅程
    在算法的世界中,回溯算法是一种通过试错来解决问题的方法。它尝试分步解决一个问题,如果在某个步骤中发现之前的选择并不会导致一个有效的解决方案,它将取消上一步甚至是上几步的选择,回退到之前的状态,再尝试另一种可能的解决方案。作为一名Java技术博主,我将带你深入了解回溯算......
  • 算法--排序算法
    选择排序#选择排序#选择排序思路:#-每次从[i,n-1]区间中选择最小值,放到i位置上#-i取值为[0,n-1],因为如果最后只有一个数,则无需查询,i取值为[0,n-2]即可defselect_sort(nums:list[int]):n=len(nums)ifn<=1:returnforiinr......
  • 【推荐算法】单目标精排模型——FiBiNET
    keyword:学术论文Motivation:传统的Embedding&MLP算法是通过内积和Hadamardproduct实现特征交互的,这篇文章的作者提出了采用SENET实现动态学习特征的重要性;作者认为简单的内积和Hadamardproduct无法有效对稀疏特征进行特征交互,因此提出bilinearfunction实现特征交互,提出了FI......
  • 力扣-图论-8【算法学习day.58】
    前言###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!习题1.引爆最多的炸弹题目链接:2101.引爆最多的炸弹-力扣(Le......
  • 高级java每日一道面试题-2024年12月10日-并发篇-为什么不建议通过 Executors构建线程
    如果有遗漏,评论区告诉我进行补充面试官:为什么不建议通过Executors构建线程池?我回答:在Java高级面试中,面试官可能会问到为什么不建议通过Executors构建线程池,这是一个关于线程池配置、资源管理和性能优化的重要问题。以下是对这一问题的详细解答:一、Executors的默认......
  • 二叉搜索树深度解析:三个关键算法(235,669,108)
    ......
  • Python-多种机器学习算法-二分类—多指标展示-雷达图-热图-柱状图
    旨在利用多种机器学习算法实现对乳腺癌的诊断。并使用准确率、精确率、召回率、F1—score和ROC-AUC等指标进行评价。并使用雷达图、柱状图等进行展示。 废话不多说先上结果图: 本人代码是使用notebook编写的,这里直接放上总代码!!!importpandasaspdimportnumpyasnpimp......
  • 大数据项目-Django基于随机森林和决策树算法实现的电商平台销量预测系统
    《[含文档+PPT+源码等]精品Django基于随机森林和决策树算法实现的电商平台销量预测系统》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、包运行成功以及课程答疑与微信售后交流群、送查重系统不限次数免费查重等福利!数据库管理工具:phpstudy/Navicat或者phpstudy/sq......