Kruskal演算法的C語言程式
Kruskal演算法是有關圖的最小生成樹的演算法。Kruskal演算法是兩個經典的最小生成樹演算法之一,另外一個是Prim演算法。
C語言程式(去除了原文中非標準的C語言程式碼):
#include<stdio.h> #include<stdlib.h> int i,j,k,a,b,u,v,n,ne=1; int min,mincost=0,cost[9][9],parent[9]; int find(int); int uni(int,int); int main() { printf("\n\tImplementation of Kruskal's algorithm\n"); printf("\nEnter the no. of vertices:"); scanf("%d",&n); printf("\nEnter the cost adjacency matrix:\n"); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { scanf("%d",&cost[i][j]); if(cost[i][j]==0) cost[i][j]=999; } } printf("The edges of Minimum Cost Spanning Tree are\n"); while(ne < n) { for(i=1,min=999;i<=n;i++) { for(j=1;j <= n;j++) { if(cost[i][j] < min) { min=cost[i][j]; a=u=i; b=v=j; } } } u=find(u); v=find(v); if(uni(u,v)) { printf("%d edge (%d,%d) =%d\n",ne++,a,b,min); mincost +=min; } cost[a][b]=cost[b][a]=999; } printf("\n\tMinimum cost = %d\n",mincost); } int find(int i) { while(parent[i]) i=parent[i]; return i; } int uni(int i,int j) { if(i!=j) { parent[j]=i; return 1; } return 0; }
執行結果:
Implementation of Kruskal's algorithm Enter the no. of vertices:6 Enter the cost adjacency matrix: 0 3 1 6 0 0 3 0 5 0 3 0 1 5 0 5 6 4 6 0 5 0 0 2 0 3 6 0 0 6 0 0 4 2 6 0 The edges of Minimum Cost Spanning Tree are 1 edge (1,3) =1 2 edge (4,6) =2 3 edge (1,2) =3 4 edge (2,5) =3 5 edge (3,6) =4 Minimum cost = 13
相關推薦
擴充套件歐幾里得演算法--C語言程式
前提 擴充套件歐幾里得演算法是在歐幾里得演算法(輾轉相除法)的前提下,對已知數求係數的一種演算法。擴充套件歐幾里得演算法的公式推導我就不廢話了,基本上就是第一次推導的係數等於第二次推導的係數之間的聯絡,很多文章都引用百度對擴充套件歐幾里得的定義,但是講的不是很
Kruskal演算法的C語言程式
Kruskal演算法是有關圖的最小生成樹的演算法。Kruskal演算法是兩個經典的最小生成樹演算法之一,另外一個是Prim演算法。 C語言程式(去除了原文中非標準的C語言程式碼): #include<stdio.h> #include<stdlib.
Prim演算法的C語言程式
Prim演算法是有關圖的最小生成樹的演算法。1957年由美國電腦科學家羅伯特·普里姆(Robert C. Prim)獨立發現。 需要說明的是,該程式使用了三重迴圈,其計算速度相當的慢,可以說是不可用的。 C語言程式(去除了原文中非標準的C語言程式碼): #inclu
c語言程式求一元二次方程
#include<stdio.h> #include<math.h> void main() { float a ,b ,c ,d ,e ,f ,x1 ,x2; printf("請輸入a:"); scanf("%f",&a); printf("請輸入b:"); sca
VS2017使用方法 編寫C語言程式"Hello World"
本文介紹用Microsoft Visual Studio 2017建立一個C語言程式的具體步驟。 Step1:開啟Microsoft Visual Studio 2017 Step2:新建Project ①檔案→新建→專案 ②選擇Visual C++ → 空專
C語言入門 2 安裝VS2013開發環境並編寫第一個C語言程式
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Mac上編寫C語言程式
基礎知識: 一、mac開啟終端:1、點選mac右上角的搜尋圖示 -> 2、搜尋“terminal.app” -> 按enter鍵開啟終端 二、終端命令:新建檔名(mkdir 資料夾名);列出資料夾下列表(ls); 刪除命令(rm 檔名/資料夾) 三、進入資
GSM A5/1演算法C語言程式碼實現和分析
介紹 全球超過200個國家和地區超過10億人正在使用GSM電話。對中國使用者來說,GSM就是移動和聯通的2g模式。 在1982年A5首次提出時,人們認為A5 / 1金鑰長度要128位,但最終確定的結果是64位金鑰(政府可以使用暴力破解算出)。很可能是政府的壓力迫使金鑰位數縮
Ubuntu下GDB除錯C語言程式
轉自:http://zhgeaits.me/other/2013/03/17/gdb-study-notes.html,感謝博主。 1.GDB是什麼 GDB是GNU開源組織釋出的一個UNIX下的程式除錯工具,專門用來除錯C,C++這些程式的了,而且都是命令列模式的。 2.準備工作 平
排序演算法c語言描述---氣泡排序
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
排序演算法c語言描述---直接插入排序
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
排序演算法c語言描述---選擇排序
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
排序演算法c語言描述---希爾排序
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
排序演算法c語言描述---雙向氣泡排序
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
程式設計菜鳥到大佬之路:C語言程式(十二)
第十二天學習精要 遞迴初步 遞迴 一個函式,自己呼叫自己,就是遞迴。 # include <iostream> using namespace std; int factorial(int n) // 函式返回n的階乘 { if (n ==
KMP演算法(C語言)
#include <stdio.h> #include <string.h> int KMP(char *t, char *p, int *next) { int a,i,j; a=0; i=0; j=0; while(i<strlen(t)
5 種排序演算法--C語言連結串列
原始碼地址 GitHub:https://github.com/GYT0313/C-DataStructure/blob/master/sortIn5.c 包括: 氣泡排序 快速排序 選擇排序 插入排序 希爾排序 執行: 注意:
SHA-1演算法C語言實現
> 程式碼轉載自:https://blog.csdn.net/testcs_dn/article/details/25771377?locationNum=13&fps=1 > 感謝博主分享 #include<stdio.h> void creat_w(uns
如何在C語言程式中統計輸入漢字的個數
C中的漢字用“機內碼”,一個漢字兩位元組,最高位都是1,所以可以用下列程式碼求得一個字串裡漢字的個數: #include<stdio.h> #include<string.h> int main() { char s[1000]; int cn,i,all; whil
頁面置換演算法——最近最久未使用演算法(c語言實現)
作業系統實驗:用C語言程式設計實現最近最久未使用置換演算法(LRU) 最近最久未使用置換演算法(LRU),全稱Least Recently Used,是一種頁面置換演算法。 對於在記憶體中但又不用的資料塊(記憶體塊)叫做LRU,作業系統會根據哪些資料屬於LRU而將其移出記憶體而騰出空間來載入另外