全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:677
推到 Plurk!
推到 Facebook!

能只出現一條路徑嗎?

尚未結案
liyanzi
一般會員


發表:51
回覆:45
積分:19
註冊:2005-01-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-12 11:06:54 IP:203.68.xxx.xxx 未訂閱
各位大大,請問一下 我現在做的是最短路徑~~ 現在只做到~~輸入每條路徑, 但卻顯示出卻是類似像矩陣一樣, 可以只出現~~最短的那條嗎? 拜託各位大大解答一下~~~ [code] //---------------------------------------------------------------------------    #include  #pragma hdrstop #include "Unit1.h" #define MAXLEN 1000 int cost[7][7]; int dist[7]; #pragma argsused //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void creategraph(int *node,int num) { int from; int to; int i; for ( i = 0; i < num; i ) { from = node[i*3]; to = node[i*3 1]; cost[from][to] = node[i*3 2]; } } //--------------------------------------------------------------------------- void shortestpath(int begin,int num) { int selected[7]; int min; int s; int i,j; for ( i = 2; i <= num; i ) { selected[i] = 0; dist[i] = cost[begin][i]; } selected[begin] = 1; dist[begin] = 0; Form1 -> Memo1 -> Text = Form1 -> Memo1 -> Text "頂點1 2 3 4 5 6\n"; for ( j = 1; j <= num; j ) Form1 -> Memo1 -> Text = Form1 -> Memo1 -> Text dist[j] "\t"; Form1 -> Memo1 -> Text = Form1 -> Memo1 -> Text "\n"; for ( i = 1; i <= num - 1; i ) { min = MAXLEN; for ( j = 1; j <= num; j ) if ( min > dist[j] && selected[j] == 0 ) { s = j; min = dist[j]; } selected[s] = 1; for ( j = 1; j <= num; j ) { if (selected[j] == 0 && dist[s] cost[s][j] < dist[j]) dist[j] = dist[s] cost[s][j]; Form1 -> Memo1 -> Text = Form1 -> Memo1 -> Text dist[j] "\t" ; } Form1 -> Memo1 -> Text = Form1 -> Memo1 -> Text "\n"; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { //Memo1 -> Text = Edit1 -> Text "\n" Edit2 -> Text Edit3 -> Text Edit4 -> Text Edit5 -> Text Edit6 -> Text ; int i,j,q; int E1 = Edit1 -> Text.ToInt(); int E2 = Edit2 -> Text.ToInt(); int E3 = Edit3 -> Text.ToInt(); int E4 = Edit4 -> Text.ToInt(); int E5 = Edit5 -> Text.ToInt(); int E6 = Edit6 -> Text.ToInt(); int E7 = Edit7 -> Text.ToInt(); int node[7][3] = {{1, 2, E1}, {2, 3, E2}, {2, 4, E3}, {3, 5, E4}, {4, 5, E5}, {4, 6, E6}, {5, 6, E7}}; for ( i = 1; i <= 6; i ) for ( j = 1; j <= 6; j ) cost[i][j] = MAXLEN; creategraph(*node,7); Memo1 -> Text = "加權圖形的鄰接陣列內容:\n" ; for ( i = 1; i <= 6; i ) { for ( j = 1; j <= 6; j ) Memo1 -> Text = Memo1 -> Text cost[i][j] "\t" ; Memo1 -> Text = Memo1 -> Text "\n"; } Memo1 -> Text = Memo1 -> Text "\n從頂點1到各頂點最近距離計算過程:\n"; shortestpath(1,6); } //--------------------------------------------------------------------------- [code] 發表人 - liyanzi 於 2005/07/12 14:15:06
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-12 12:18:53 IP:210.68.xxx.xxx 未訂閱
您好:    PO程式碼的方式請參考版規說明,煩請修改謝謝您的配合 >
系統時間:2024-05-18 4:31:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!