程式設計思維與實踐 Week2 作業

2021-10-03 16:55:06 字數 2570 閱讀 4654

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演算法應用。由於題目要求輸...