同 793 Network Connections,在此不贅述。
By David.K
p879題目連結
回ACM題庫目錄
回首頁
C語言考古題 & C的解題 -- 程式設計學習入門
學習程式設計,語法固然重要,也是許多程式設計課程的教學重點。但是看的懂 C ,不見得會用 C 來解決問題(Problem solving),所以學會解題是重點中的重點。 學習C語言的不二法門,就是從寫程式解題開始,這裡的考古題由淺而深,循序漸進,對初學者甚有助益。 ACM 協會針對每年程式設計比賽的練習需求,建立一個線上的題庫與評分系統,希望藉由題庫練習的機會,在此心得分享,讓有心學習程式解題的人,能有個溝通成長的橋樑。
2011年7月10日 星期日
Problem 793 Network Connections,網絡連接
此題使用 Dijkstra 演算法即可解決。
Dijkstra 演算法可以參考:http://zh.wikipedia.org/wiki/%E8%BF%AA%E7%A7%91%E6%96%AF%E5%BD%BB%E7%AE%97%E6%B3%95
By David.K
p793題目連結
回ACM題庫目錄
回首頁
Dijkstra 演算法可以參考:http://zh.wikipedia.org/wiki/%E8%BF%AA%E7%A7%91%E6%96%AF%E5%BD%BB%E7%AE%97%E6%B3%95
By David.K
p793題目連結
回ACM題庫目錄
回首頁
Problem 10116 Robot Motion 機器人運動
這題其實也只要多建立一個相同大小的陣列紀錄步數以及重複步數值就可以了。
最後在主程式內傳入開始的 x, y 座標即可。
By David.K
p10116題目連結
回ACM題庫目錄
回首頁
#define row 12
#define col 12
int step, r, c;
char motion[row][col];
int record[row][col];
void move(int x, int y)
{
int i, j;
record[x][y] = step ++;
switch (motion[x][y])
{
case 'N':
x --;
break;
case 'E':
y ++;
break;
case 'W':
y --;
break;
case 'S':
x ++;
break;
}
if (x < 0 || x >= r || y < 0 || y >= c)
{
printf("%d step(s) to exit\n", step - 1);
return;
}
if (record[x][y] != -1 )
{
int k = step - record[x][y];
printf("%d step(s) before a loop of %d step(s)\n", step - k - 1, k);
return;
}
move(x, y);
}最後在主程式內傳入開始的 x, y 座標即可。
By David.K
p10116題目連結
回ACM題庫目錄
回首頁
訂閱:
意見 (Atom)