註冊
登錄
論壇
搜索
幫助
導航
私人消息 (0)
公共消息 (0)
系統消息 (0)
好友消息 (0)
帖子消息 (0)
種子論壇 | 高雄市資訊培育協會學員討論區
»
結訓課程 (青少年程式設計班)
»
高中生程式解題
» 二維最短路徑
返回列表
發帖
發短消息
加為好友
Alen
當前離線
UID
50
帖子
35
精華
0
積分
0
閱讀權限
10
在線時間
5 小時
註冊時間
2010-8-16
最後登錄
2011-10-30
新手上路
1
#
跳轉到
»
Alen
發表於 2011-9-10 21:40
|
顯示全部帖子
#include<iostream>
#include<fstream>
using namespace std ;
const int M = 9999 ; // far way
int main()
{
ifstream fin("pb.in") ;
int p,v,start,end ; // 寬度,總點數,起始點編號,終點編號
p = 5 ;
v = p*p ; // 題目給的 5x5的diagram
int map[v][v] ;
int parent[v] ;
int visit[v] ;
int d[v] ;
// init map and draw map
for( int i = 0 ; i < v ; i ++ )
{
for( int j = 0 ; j < v ; j ++ )
{
map[i][j] = M ;
}
visit[i] = false ;
d[i] = M ;
}
// read pb.in diagram
for( int i = 0 ; i < v ; i ++ )
{
string x ;
fin >> x ;
if( x == "e" ) end = i ;
if( x == "s" ) start = i ;
if( x == "x" ) visit[i] = true ;
}
// check diagram
for( int i = 0 ; i < v ; i ++ )
{
if( i%p != p-1 && !visit[i+1] )
{
map[i][i+1] = 1 ;
map[i+1][i] = 1 ;
}
if( i%p != 0 && !visit[i-1] )
{
map[i][i-1] = 1 ;
map[i-1][i] = 1 ;
}
if( i >= p && !visit[i-p] )
{
map[i][i-p] = 1 ;
map[i-p][i] = 1 ;
}
if( i < (p-1)*p && !visit[i+p] )
{
map[i][i+p] = 1 ;
map[i+p][i] = 1 ;
}
}
/* for( int i = 0 ; i < v ; i ++ )
{
for( int j = 0 ; j < v ; j ++ )
{
cout << map[i][j] << " " ;
}
cout << endl ;
}
cout << start << "-" << end << endl ; */
// dijkstra
d[start] = 0 ;
parent[start] = start ;
for( int i = 0 ; i < v ; i ++ )
{
int min = M ;
int index = -1 ;
for( int j = 0 ; j < v ; j ++ )
{
if( !visit[j] && d[j] < min )
{
min = d[j] ;
index = j ;
}
}
if( index == -1 ) break ;
visit[index] = true ;
for( int j = 0 ; j < v ; j ++ )
{
if( !visit[j] && ( d[index] + map[index][j] < d[j] ) )
{
d[j] = d[index] + map[index][j] ;
parent[j] = index ;
}
}
}
/* for( int i = 0 ; i < v ; i ++ )
{
cout << d[i] << " " ;
}
cout << endl ; */
//for( int i = 0 ; i < v ; i ++ )
//{
int pre = end ;
cout << pre << "->" ;
while( parent[pre] != pre )
{
pre = parent[pre] ;
cout << pre << "->" ;
}
cout << "cost" << d[end] << endl ;
//}
system("Pause") ;
}
複製代碼
我是來去無蹤的..
..士豪(Alen)黑輪
TOP
返回列表
C++程式設計入門(201302)
108Python冬令營
快樂 C++ (週六19:00-21:00) 3F
十全國小資優班 - 基本文書研習
高中生程式解題系統專區
谷哥人營隊
114年國三專班
Python研習營(113-114)
114年Python證照特訓
114年谷哥人程式體驗營
114年APCS冬令營
113Scratch夏令營
Scratch冬令營(113-114)
113年國三專班
Python證照特訓營(113)
113年程式夏令營(一)(二)
113年APCS夏令營(一)(二)
C語言 / C++ (特別輔導)
C++證照
C#
家教/特輔
C語言特輔/證照(家教)
C++證照
C#
HTML5+CSS+JavaScript+PHP+MySQL
Java 家教 (王捷恩)
TQC+資料結構
快樂學 Scratch
Python 家教 (王捷恩 康恒睿)
Python 特別輔導 (家教)
快樂 C++ (家教)
iKnow
我愛 Java (家教)
程式解題我最行 (家教)
程式常態班
C++ 新生挑戰區
考照心得分享
快樂 C++11307週五19:00
快樂C++11309週六13:30-15:30
快樂 C++11403週六1000
快樂 C++11303 (週六15:40-17:40) 3F
程式解題我最行 (週六15:30-17:30) 3F
快樂 C++ (週六13:30-15:30) 3F
快樂 C++ (週六19:00-21:00) 3F
程式解題我最行 (週六10:00-12:00) 3F
快樂學 Scratch
程式解題我最行(週五19:00-21:00)
快樂 C++ (週六13:30-15:30) 3F
程式解題我最行(週三19:15-21:15)
快樂 C++11207週六10
快樂 C++11208週六19:00
程式解題我最行 (週六19:00-21:00) 3F
程式解題我最行 (週四19:10-21:10)
產投職訓
結訓課程 (產投職訓)
Php & MySQL old
Illustrator old
Dreamweaver old
Android手機程式開發班
PHP & MySQL電子商務互動式網站實作班 (102下)
PHP & MySQL (102上)
PHP & MySQL電子商務互動式網站實作班
Photoshop數位影像設計初階
Flash創意廣告動畫初階
行銷短片視訊剪輯
數位商業攝影實務班
PHP & MySQL電子商務系統開發實務初階班
電子商務系統開發實務中階班
Server基礎架設&動態網頁設計初階班
Java視窗應用程式設計與遊戲開發班
Illustrator時尚插畫創作設計初階班
102上Php & MySQL 初階班
電子商務互動式網站實作中階
Dreamweaver多媒體網頁設計
Android手機程式開發班(2012年10月)
PHP & MySQL (2012年10月)
創意塗鴉
yahoo橫幅
google橫幅
市民學苑
第二屆樂活部落格
第一屆電腦設備簡易維護和故障排除班
專案訓練
電子商務創業班
TQC PHP認證
投資理財班
領隊導遊班
電腦基礎及網路應用身心障礙專班
應用軟體網頁化開發
[收藏此主題]
[關注此主題的新回復]
[通過 QQ、MSN 分享給朋友]