1. 程式人生 > >【第十三週】Prim演算法的驗證

【第十三週】Prim演算法的驗證

*Copyright (c)2017,煙臺大學計算機與控制工程學院                     
*All rights reserved.                     
*檔名稱:                     
*作    者:李佳駿                    
*完成日期:2017年11月30日                     
*版 本 號:v1.0                     
*問題描述:資料結構實踐——Prime演算法的驗證
                     
*輸入描述: 無                
*程式輸出: <span style="color:#33cc00;">  </span>   

程式碼及截圖

#include <stdio.h>
#include <malloc.h>
#include "graph.h"

void Prim(MGraph g,int v)
{
    int lowcost[MAXV];          //頂點i是否在U中
    int min;
    int closest[MAXV],i,j,k;
    for (i=0; i<g.n; i++)           //給lowcost[]和closest[]置初值
    {
        lowcost[i]=g.edges[v][i];
        closest[i]=v;
    }
    for (i=1; i<g.n; i++)           //找出n-1個頂點
    {
        min=INF;
        for (j=0; j<g.n; j++)     //在(V-U)中找出離U最近的頂點k
            if (lowcost[j]!=0 && lowcost[j]<min)
            {
                min=lowcost[j];
                k=j;            //k記錄最近頂點的編號
            }
        printf(" 邊(%d,%d)權為:%d\n",closest[k],k,min);
        lowcost[k]=0;           //標記k已經加入U
        for (j=0; j<g.n; j++)       //修改陣列lowcost和closest
            if (g.edges[k][j]!=0 && g.edges[k][j]<lowcost[j])
            {
                lowcost[j]=g.edges[k][j];
                closest[j]=k;
            }
    }
}

int main()
{
    MGraph g;
    int A[6][6]=
    {
        {0,6,1,5,INF,INF},
        {6,0,5,INF,3,INF},
        {1,5,0,5,6,4},
        {5,INF,5,0,INF,2},
        {INF,3,6,INF,0,6},
        {INF,INF,4,2,6,0}
    };
    ArrayToMat(A[0], 6, g);
    printf("最小生成樹構成:\n");
    Prim(g,0);
    return 0;
}

相關推薦

十三Prim演算法驗證

*Copyright (c)2017,煙臺大學計算機與控制工程學院 *All rights reserved. *檔名稱: *作 者:李佳駿

十三Kruskal演算法驗證

#include <stdio.h> #include <malloc.h> #include "graph.h" #define MaxSize 100 typedef struct { int u; //邊的起始頂點 int v; //邊的終止頂點

十三Dijkstra演算法驗證

*Copyright (c)2017,煙臺大學計算機與控制工程學院 *All rights reserved. *檔名稱:

十三專案3Floyd演算法驗證

/*Copyright (c) 2015, 煙臺大學計算機與控制工程學院 * All rights reserved. * 檔名稱:H1.cpp * 作者:辛志勐 * 完成日期:2015年12月7日 * 版本號:VC6.0 * 問題描述:Floyd演算法驗證 * 輸入描述:無 * 程式輸出:圖的基本

專案3-順序串演算法

採用順序儲存方式儲存串,實現下列演算法並測試:   (1)試編寫演算法實現將字串S中所有值為c1的字元換成值為c2的字元:  void Trans(SqString *&s, char c1, char c2);  (2)試編寫演算法,實現將已知字串所有字元倒過來重新排列。如ABCDEF改為FEDCB

演算法分析與設計169. Majority Element

方法概覽 這題和《演算法概論習題》2.23是一樣的。老師剛講過,複習一下。 題目大意:找到出現次數超過一半的元素。 看到題目,應該想到,給定一個整數陣列,找出出現次數大於N/2 的那個數,且這樣的數若存在,就僅僅存在一個。 方法很多,這裡總結四

python全棧開發十三Python面向對象

等於 dog -- egg clas 註釋 python面向對 sta 面向對象 一、面向過程:面向過程的程序設計的核心是過程(流水線式思維),過程即解決問題的步驟,面向過程的設計就好比精心設計好一條流水線,考慮周全什麽時候處理什麽東西。 優點:極大地降低了寫成學的復雜度,

web前端十三jQuery擴展和事件

.text .get lap lose remove 沖突 viewport 賦值 edit 一、jQuery事件 常用事件 blur([[data],fn]) 失去焦點 focus([[data],fn]) 獲取焦點( 搜索框例子) change([[d

Django 十篇自定義驗證規則和中間件

表達式 主動 mixin tex choice direct request lock test 一、Form基本使用 類 字段 is_valid() cleaned_data errors 字段參數: m

Django 十三Form組件歸類

checkbox .post 抽象類 gen ice combo 標簽 路徑 label 一、Form類 創建Form類時,主要涉及到 【字段】 和 【插件】,字段用於對用戶請求數據的驗證,插件用於自動生成HTML; 1、Django內置字段如下: Field

最小生成樹prim演算法

演算法分析的一般步驟: 1、文字描述:如果一個演算法文字描述不清楚,就說明思路不清楚,也不可能寫好。 prim演算法是實現圖的最小生成樹。既然是圖,就假設包含n個頂點,m條邊。prim演算法是從頂點出發的,其演算法時間複雜度與頂點數目有關係。 (注意:prim演算法適合稠密圖,其時間複雜度為O(n^2)

MOOCPython資料分析與展示-北京理工大學-資料分析之概要

概要:提取資料的基本特徵 單元7:pandas庫入門 Pandas是Python第三方庫,提供高效能易用資料型別和分析工具,Pandas基於NumPy實現,常與NumPy和Matplotlib一同使用。 常用引用方法: import pandas

學習筆記+思維導圖+翻譯

【學習筆記】一丶概念結構設計1.首先就是需要了解概念模型分為以下四個特點:(1)能真實充分地反映現實世界(2) 易於理解(3)易於更改(4)易於向關係、網狀、層次等各種資料模型轉換2. 接下來就是重點來理解一下E-R模型E-R模型分為一下三種概念:(1)兩個實體型之間的聯絡(

專案4-字串加密

#include <stdio.h> #include "sqString.h" SqString A,B; //用於儲存字元對映表 SqString EnCrypt(SqString p) { int i=0,j; SqString q; while (i<p.

Python開發十三高階函式、遞迴函式、閉包

函數語言程式設計是指用一系列函式解決問題 好處:用每個函式完成每個細小的功能,一系列函式任意組合能夠解決大問題 函式僅僅接收輸入併產生輸出,不包含任何能影響輸出的內部狀態 函式之間的可重入性 當一個函式的輸入實參一定,結果也必須一定的函式為可重入函式 例子: #可重入函式 def myadd(x,y):

專案1二叉樹演算法驗證(一)

/* Copyright (c)2017,煙臺大學計算機與控制工程學院 All rights reserved. 檔名稱:33.cpp 作 者:尚文哲 完成日期:2017年11月9日 問題描述: 執行並重複測試教學內容中涉及的演算法。改

十三專案2 Dijkstra演算法驗證

/*Copyright (c) 2015, 煙臺大學計算機與控制工程學院 * All rights reserved. * 檔名稱:H1.cpp * 作者:辛志勐 * 完成日期:2015年11月30日 * 版本號:VC6.0 * 問題描述:Dijkstra演算法的驗證 * 輸入描述:無 * 程式輸出

十三任務二Animal設計為抽象類,每一個Animal的派生類都有一個“名字”資料成員

【任務2】下面給出了基類Animal和main()函式。 (任務2.1)根據main()函式給出的註釋提示,設計出相關的各個類。 (任務2.2)顯然,Animal設計為抽象類更合適,Animal不需要能夠例項化,是專門作基類使用的。改造程式,使Animal設計為抽象類,這時

C++十三任務3定義抽象基類Shape,由它派生出3個派生類,Circle(圓形)、Rectangle(矩形)、Triangle(三角形)

/* * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生  * All rights reserved. * 檔名稱:C++第十三週【任務3】                               * 作    者:  

Django Restful Framework四篇版本、解析器、序列化和請求數據驗證

tor ade clu cts scheme com 繼承 src 當前 一、版本 程序也來越大時,可能通過版本不同做不同的處理 沒用rest_framework之前,我們可以通過以下這樣的方式去獲取。 class UserView(APIView): def