// z2.cpp :Defines the entry point for the console application.
//
#include "stdafx.h"
//#include
//void main()
//{
#define MAXNUM 30
#define INFINITY 10000
#define FALSE 0
#define TRUE 1
#define BACK -1
#include "stdio.h"
#include
#include "malloc.h"
typedef struct{
char vexs[MAXNUM];
int edges[MAXNUM][MAXNUM];
int n,e;
}Mgraph;
void CreateGraph(Mgraph *g)
{
int i,j,k,w;
char ch;
printf("請(qǐng)輸入結(jié)點(diǎn)數(shù)與弧數(shù),如:3,2:");
scanf("%d,%d",&(g->n),&(g->e));
for(i=0;in;i++)
{
for(j=0;jn;j++)
{
if(i==j){
g->edges[i][j]=0;
}else
{
g->edges[i][j]=INFINITY;
}
}
}
//獲取權(quán)值
printf("\n為方便演示,結(jié)點(diǎn)內(nèi)容默認(rèn)為結(jié)點(diǎn)序號(hào),無(wú)需輸入.\n\n下面請(qǐng)輸入弧及權(quán)值,例如:若點(diǎn)0到1有弧可達(dá),且權(quán)值為10,則輸入:0,1,10.注意:輸入時(shí)不區(qū)分弧的順序.\n");
for(k=0;ke;k++){
printf("\t請(qǐng)輸入第%d個(gè)弧及權(quán)值:",k+1);
scanf("%d,%d,%d",&i,&j,&w);
g->edges[i][j]=w;
}
//輸出鄰接矩陣
printf("\n鄰接矩陣:\n",k);
for(i=0;in;i++){
printf("\t");
for(j=0;jn;j++){
if(g->edges[i][j]>=INFINITY){
printf("∞\t");
}else{
printf("%d\t",g->edges[i][j]);
}
}
printf("\n");
}
}
void ShortPath(Mgraph *g,int v0)
{
/*定義多個(gè)變量與數(shù)組,其中R數(shù)組為記錄路徑的數(shù)組,iterator為游標(biāo),
D為距離數(shù)組,final數(shù)組記錄是否已取到最短路徑
*/
int i,j,v,w,min;
int R[MAXNUM][MAXNUM];
int iterator[MAXNUM];
int D[MAXNUM];
int final[MAXNUM];
//初始化游標(biāo)為零
for(i=0;in; ++v){
final[v] = FALSE;
D[v] = g->edges[v0][v];
}
//初始化v0的路徑距離為零,設(shè)置已獲取最短路徑
D[v0] = 0;
final[v0] = TRUE;
//主循環(huán),獲取其他的最短路徑
for(i = 1;i < g->n; ++i){
min = INFINITY;
//尋找最小的D[w]
for(w = 0;w < g->n; ++w){
if(final[w] != TRUE){
if(D[w]n; ++w){
if((final[w] != TRUE) && (min+g->edges[v][w] < D[w])){
//更新路徑
iterator[w]=iterator[v];
for(j=0;jedges[v][w];
}
}
}
//若final始終為FALSE,則不可達(dá)
for(w = 0;wn; ++w){
if(final[w] != TRUE){
printf("\t點(diǎn)%d到點(diǎn)%d不可達(dá)\n",v0,w);
}
}
}
//主方法
void main()
{
Mgraph * g;
int i=0;
g=(Mgraph *)malloc(sizeof(Mgraph));
printf("該程序?qū)崿F(xiàn)了Dijkstra算法,支持路徑顯示,請(qǐng)按提示輸入數(shù)據(jù):\n\n");
CreateGraph(g);
printf("\n最小路徑判斷(以0點(diǎn)為起點(diǎn)):\n");
ShortPath(g,0);
getchar();
}
求助關(guān)于圖的矩陣表示的程序(離散數(shù)學(xué))
求助關(guān)于圖的矩陣表示的程序(離散數(shù)學(xué))
用c語(yǔ)言編寫(xiě),能夠?qū)崿F(xiàn)下列功能.任意給定一個(gè)圖,能夠求得此圖的鄰接矩陣,距離矩陣,可達(dá)矩陣,關(guān)聯(lián)矩陣.任意給定一個(gè)圖,能夠判斷這個(gè)圖是否是歐拉圖,平面圖,樹(shù).
要求:首先要輸入一個(gè)節(jié)點(diǎn)關(guān)系;屏幕文字提示并等待.并能夠辨別出集合中節(jié)點(diǎn)的個(gè)數(shù),并能將圖畫(huà)出來(lái).程序必須能夠求解這些節(jié)點(diǎn)關(guān)系的如下性質(zhì):鄰接矩陣,可達(dá)矩陣,關(guān)聯(lián)矩陣,距離矩陣,判定歐拉圖,平面圖,或者有向樹(shù).
選擇完成:根據(jù)要求計(jì)算任何兩個(gè)節(jié)點(diǎn)之間特定長(zhǎng)度的節(jié)點(diǎn)的數(shù)量;判定哈密頓圖;對(duì)節(jié)點(diǎn)進(jìn)行著色;求出最小生成樹(shù).
編程;首先哪個(gè)講節(jié)點(diǎn)關(guān)表示成矩陣形式,例如,輸入可以采用逐個(gè)詢(xún)問(wèn)有序?qū)?利用字母加逗號(hào)方式.輸入完成采用輸入特定符號(hào)方式.
用c語(yǔ)言編寫(xiě),能夠?qū)崿F(xiàn)下列功能.任意給定一個(gè)圖,能夠求得此圖的鄰接矩陣,距離矩陣,可達(dá)矩陣,關(guān)聯(lián)矩陣.任意給定一個(gè)圖,能夠判斷這個(gè)圖是否是歐拉圖,平面圖,樹(shù).
要求:首先要輸入一個(gè)節(jié)點(diǎn)關(guān)系;屏幕文字提示并等待.并能夠辨別出集合中節(jié)點(diǎn)的個(gè)數(shù),并能將圖畫(huà)出來(lái).程序必須能夠求解這些節(jié)點(diǎn)關(guān)系的如下性質(zhì):鄰接矩陣,可達(dá)矩陣,關(guān)聯(lián)矩陣,距離矩陣,判定歐拉圖,平面圖,或者有向樹(shù).
選擇完成:根據(jù)要求計(jì)算任何兩個(gè)節(jié)點(diǎn)之間特定長(zhǎng)度的節(jié)點(diǎn)的數(shù)量;判定哈密頓圖;對(duì)節(jié)點(diǎn)進(jìn)行著色;求出最小生成樹(shù).
編程;首先哪個(gè)講節(jié)點(diǎn)關(guān)表示成矩陣形式,例如,輸入可以采用逐個(gè)詢(xún)問(wèn)有序?qū)?利用字母加逗號(hào)方式.輸入完成采用輸入特定符號(hào)方式.
其他人氣:704 ℃時(shí)間:2019-08-18 16:42:23
優(yōu)質(zhì)解答
我來(lái)回答
類(lèi)似推薦
- 離散數(shù)學(xué)集合論 二元關(guān)系 求R的關(guān)系矩陣和關(guān)系圖
- 可達(dá)矩陣表示有向圖
- 矩陣表示的變換保持圖形的相似
- what are your_relationship with Johnson,a man of humor?a.actual,b.real c.true.
- 把一個(gè)平行四邊形的底擴(kuò)大3倍,高擴(kuò)大2倍,得到的平行四邊形的面積是原來(lái)的多少倍?
- 丹麥屬于哪個(gè)國(guó)家
- 中國(guó)傳統(tǒng)的名山大川 其中的作文 順便寫(xiě)一篇這樣的作文 急須 快
- 五光十色指數(shù)字幾?、
- 英語(yǔ)翻譯
- 我的生日是8月30號(hào)用英語(yǔ)怎么說(shuō)?
- How many r------do you have?about n------ l like my aunt.
- 采字的上面是什么字 采字的下面是什么字 合起來(lái)是什么意思
猜你喜歡
- 1This lock cannot be .you need a key這句英文翻譯成中文是什么意思啊
- 2vegetable ago bag change gentle again go page按讀音分類(lèi) - - - - - - - -
- 3一個(gè)牧場(chǎng)上長(zhǎng)滿了牧草,牧草每天都勻速生長(zhǎng)地生長(zhǎng).這些牧草可供5只羊吃30天,或者可供7只羊吃20天.
- 4集合P={x|y=x+1},集合Q={y|y=x?1},則P與Q的關(guān)系是( ?。?A.P=Q B.P?Q C.P?Q D.P∩Q=?
- 5形容忘記了吃飯和睡覺(jué)的成語(yǔ)有什么?
- 6在同一時(shí)間同一地點(diǎn)的樓高和影長(zhǎng) 成不成比例 并說(shuō)明理由
- 7使3x+5y=k+2和2x+3y=k成立,且xy的和等于12,求k的值
- 8怎么用天平測(cè)一個(gè)大頭針的質(zhì)量 和一杯食用油的質(zhì)量.一定要寫(xiě)具體步驟、兩個(gè)問(wèn)題分開(kāi)寫(xiě)
- 9與朱元思書(shū)中的奇山的特點(diǎn)是什么?
- 10紅領(lǐng)巾微心愿應(yīng)該寫(xiě)什么
- 11I read your article ___ the school magazine(介詞)
- 12我正在等一場(chǎng)地震把土豆從地里翻出來(lái),翻譯成英語(yǔ)