首页 > 其他分享 >16.图

16.图

时间:2023-01-04 21:44:55浏览次数:32  
标签:getIndex 16 int graph vertexList public insertEdge

构造上图的图
public class Graph {
    //定点集合
    private List<String> vertexList;
    //存储图对应的临结矩阵
    private int[][] edges;
    //表示边的数目
    private int numOfEdges;

    public static void main(String[] args) {
        String[] arr = {"A", "B", "C", "D", "E"};
        Graph graph = new Graph(arr.length);
        for (String value : arr) {
            graph.insertVertex(value);
        }
        //插入边:A-C A-B C-B B-E B-D 总计5条边
        graph.insertEdge(graph.getIndex("A"), graph.getIndex("C"), 1);
        graph.insertEdge(graph.getIndex("A"), graph.getIndex("B"), 1);
        graph.insertEdge(graph.getIndex("B"), graph.getIndex("C"), 1);
        graph.insertEdge(graph.getIndex("B"), graph.getIndex("E"), 1);
        graph.insertEdge(graph.getIndex("B"), graph.getIndex("D"), 1);
        graph.show();
    }

    public void show() {
        System.out.println("  "+vertexList);
        int i=0;
        for (int[] colum : edges) {
            System.out.print(vertexList.get(i++)+" ");
            System.out.println(Arrays.toString(colum));
        }
        System.out.println("边的数量:"+numOfEdges);
    }

    /**
     * @param n 有几个节点
     */
    public Graph(int n) {
        this.vertexList = new ArrayList<>(n);
        this.edges = new int[n][n];
    }

    public int getIndex(String vertex) {
        return vertexList.indexOf(vertex);
    }

    /**
     * 插入节点
     *
     * @param vertex
     */
    public void insertVertex(String vertex) {
        vertexList.add(vertex);
    }

    /**
     * 插入边
     *
     * @param v1     节点对应的数字下标
     * @param v2     节点对应的数字下标
     * @param weight 权值,0代表不连接, 1代表连接
     */
    public void insertEdge(int v1, int v2, int weight) {
        //因为是无向图,所以正反都得赋值
        edges[v1][v2] = weight;
        edges[v2][v1] = weight;
        numOfEdges++;
    }
}
输出:
      [A, B, C, D, E]
    A [0, 1, 1, 0, 0]
    B [1, 0, 1, 1, 1]
    C [1, 1, 0, 0, 0]
    D [0, 1, 0, 0, 0]
    E [0, 1, 0, 0, 0]
    边的数量:5

 

标签:getIndex,16,int,graph,vertexList,public,insertEdge
From: https://www.cnblogs.com/wmd-l/p/17026091.html

相关文章

  • AN IMAGE IS WORTH 16X16 WORDS TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE---阅读
    ANIMAGEISWORTH16X16WORDS:TRANSFORMERSFORIMAGERECOGNITIONATSCALE---阅读笔记摘要​虽然Transformer架构已成为NLP任务的事实标准,但它在CV中......
  • 「洛谷 P1658」购物
    原题链接你就要去购物了,现在你手上有N种不同面值的硬币,每种硬币有无限多个。为了方便购物,你希望带尽量少的硬币,但要能组合出1到X之间的任意值。输出最少需要携带的......
  • NC16697 [NOIP2001]Car的旅行路线
    题目链接题目题目描述又到暑假了,住在城市A的Car想和朋友一起去城市B旅游。她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一条......
  • S2-016 CVE-2013-2251
    漏洞名称S2-016(CVE-2013-2251)通过操作前缀为“action:”/“redirect:”/“redirectAction:”的参数引入的漏洞允许远程命令执行利用条件Struts2.0.0–Struts2.3.15......
  • L2-016 愿天下有情人都是失散多年的兄妹 (25 分)
    呵呵。大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人、父母、祖父母、曾祖父母、高祖父母)则不可通婚。本题就请你帮助一对有情人判断一下,他们究竟......
  • ios16 横竖屏切换
        [selfsetNeedsUpdateOfSupportedInterfaceOrientations];    NSArray*array=[[[UIApplicationsharedApplication]connectedScenes]allObjects......
  • 基于Matlab模拟 AWGN 中16-QAM 的 OFDM 并计算 BER附完整代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • MacBook m1 16g+1t使用体验
    入手这台mac快两个月了,是时候总结一下了拿到它的那一刻,我真的快激动疯了,好久没有那么激动的时刻,我轻轻抚摸,虽然是二手的电脑,但是它的身上依旧有一股电子产品特有的......
  • 基因数据处理16之scala对BWASW运行结果进行时间统计
    说明:环境如上篇对BWASW数据处理的时候pattern需要修改,由于有很多这样的段:[bsw2_aln]read17598sequences/pairs(10000016bp)...[bsw2_aln]read17644sequences/pairs......
  • Outlook 2019 for mac v16.70 beta中文激活版
    Outlook2019是一款专业的电子邮件收发软件,outlook可以将您的电子邮件,日历和联系人集中在一起,提高工作效率,Outlook2019拥有极强的兼容行,很多网站的邮箱都可以加入到其中,让......