b pour water
東東有一張地圖,想通過地圖找到妹紙。地圖顯示,0表示可以走,1表示不可以走,左上角是入口,右下角是妹紙,這兩個位置保證為0。既然已經知道了地圖,那麼東東找到妹紙就不難了,請你編乙個程式,寫出東東找到妹紙的最短路線。
輸入:輸入是乙個5 × 5的二維陣列,僅由0、1兩數字組成,表示法陣地圖。
輸出:輸出若干行,表示從左上角到右下角的最短路徑依次經過的座標,格式如樣例所示。資料保證有唯一解。
樣例:
0 1 0 0 0
0 1 0 1 0
0 1 0 1 0
0 0 0 1 0
0 1 0 1 0
(0, 0)
(1, 0)
(2, 0)
(3, 0)
(3, 1)
(3, 2)
(2, 2)
(1, 2)
(0, 2)
(0, 3)
(0, 4)
(1, 4)
(2, 4)
(3, 4)
(4, 4)
hint:
1.座標(x, y)表示第x行第y列,行、列的編號從0開始,且以左上角為原點。
2.另外注意,輸出中分隔座標的逗號後面應當有乙個空格。
佇列非空時,每次取出隊首點處理,遍歷其上下左右四個方向,將未到達過且未超過邊界且未碰到障礙的點加入佇列
每次加入需要更新該點與起點的距離和該點的前驅節點(便於倒序輸出)
若到達終點,則返回轉去輸出路徑
#include
#include
#include
#include
using
namespace std;
struct point
point
(int thex,
int they)
}pre[5]
[5];
int maze[5]
[5], dis[5]
[5], n=5;
const
int sx=
0, sy=
0, tx=
4, ty=4;
queue points;
int dx=
;int dy=
;void
bfs()}
}}intmain()
while
(!out.
empty()
)return0;
}
倒水問題 「fill a」 表示倒滿a杯,"empty a"表示倒空a杯,「pour a b」 表示把a的水倒到b杯並且把b杯倒滿或a倒空。
輸入:輸入包含多組資料。每組資料輸入 a, b, c 資料範圍 0 < a <= b 、c <= b <=1000 、a和b互質。
輸出:你的程式的輸出將由一系列的指令組成。這些輸出行將導致任何乙個罐子正好包含c單位的水。每組資料的最後一行輸出應該是「success」。輸出行從第1列開始,不應該有空行或任何尾隨空格。
樣例:
2 7 5
2 7 4
fill b
pour b a
success
fill a
pour a b
fill a
pour a b
success
當前a/b杯中水的容量 -> 圖中當前點的座標
杯子中水的轉移方式(a倒入b、b倒入a、a倒空/滿、b倒空/滿) -> 圖中點的移動方向(上下左右)
佇列非空時,每次取出隊首狀態處理,遍歷六種倒水情況,將未到達過的狀態加入佇列
若到達目標狀態,則返回轉去輸出路徑
#include
#include
#include
#include
using
namespace std;
struct status};
queue bottle;
map pre;
void
output
(status &status)
output
(pre[status]);
cout << status.operation << endl;
}void
refresh
(status &s, status &t)
}void
bfs(
int a,
int b,
int c)
if(s.a >0)
//倒空a杯的水
if(s.b >0)
//倒空b杯的水
if(s.a < a)
//當a杯未滿時,蓄滿a杯
else
//若a杯不夠裝,把a杯倒滿,剩下的留在b杯}}
if(s.b < b)
//同理,當b杯未滿時,蓄滿b杯
else}}
}}intmain()
return0;
}
程式設計思維與實踐 Week2 作業
b題 倒水問題 bfs 東東有一張地圖,想通過地圖找到妹紙。地圖顯示,0表示可以走,1表示不可以走,左上角是入口,右下角是妹紙,這兩個位置保證為0。既然已經知道了地圖,那麼東東找到妹紙就不難了,請你編乙個程式,寫出東東找到妹紙的最短路線。input 輸入是乙個5 5的二維陣列,僅由0 1兩數字組成,...
程式設計思維與實踐 Week2 作業2道
這周作業主要是對廣度優先搜尋bfs的應用,包括求最短路徑的迷宮問題及隱式圖問題 倒水問題。東東有一張地圖,想通過地圖找到妹紙。地圖顯示,0表示可以走,1表示不可以走,左上角是入口,右下角是妹紙,這兩個位置保證為0。既然已經知道了地圖,那麼東東找到妹紙就不難了,請你編乙個程式,寫出東東找到妹紙的最短路...
程式設計思維Week2 作業
輸入乙個5x5的二維陣列由0 1組成,表示法陣地圖。地圖顯示,0表示可以走,1表示不可以走,左上角是起點,右下角是終點,這兩個位置保證為0。編寫程式,找到起點到終點的最短路線。要求輸出若干行,表示從左上角到右下角的最短路徑依次經過的座標。資料保證有唯一解。該題是典型的bfs演算法應用。由於題目要求輸...