NPU 17屆程式設計作業6 之電子老鼠 1042

2021-08-10 19:34:01 字數 1422 閱讀 9961

時限:1000ms 記憶體限制:10000k 總時限:3000ms

描述:

有乙隻電子老鼠被困在如下圖所示的迷宮中。這是乙個12*12單元的正方形迷宮,黑色部分表示建築物,白色部分是路。電子老鼠可以在路上向上、下、左、右行走,每一步走乙個格仔。現給定乙個起點s和乙個終點t,求出電子老鼠最少要幾步從起點走到終點。

輸入:

本題包含乙個測例。在測例的第一行有四個由空格分隔的整數,分別表示起點的座標s(x.y)和終點的座標t(x,y)。從第二行開始的12行中,每行有12個字元,描述迷宮的情況,其中'x'表示建築物,'.'表示路.

輸出:

輸出乙個整數,即電子老鼠走出迷宮至少需要的步數。

輸入樣例:

2 9 11 8

************

x......x.***

x.x.xx.....x

x.x.xx.***.x

x.x.....x..x

x.*********x

x...x.x....x

x.***...***x

x.....x....x

***.***x.x.x

******x..***

************

輸出樣例:

28

本題要求求到達終點所需的最小步數,因此使用廣搜演算法。先按題目要求建立儲存地圖的二維陣列,標記陣列和儲存到達該點所需步數的陣列。由於每走一步,該點就會被標記為已經使用,因此不會發生倒過來重新走的情況。本題使用結構體,建立2個佇列,分別儲存橫座標和豎座標。

廣搜演算法需要使用佇列儲存資料,使用queue標頭檔案。

本**可以擴大地圖相關的陣列的容量,加入新變數,記錄地圖的大小,並稍微修改廣搜函式的判斷條件,即可實現輸入其他大小的地圖也實現判斷功能。也可以更改為深搜演算法,求出所有路徑,此時可以將所有路徑的行進路線輸出。

#include#include//使用佇列標頭檔案 

using namespace std;

struct coor//定義結構體佇列儲存座標

coor;

char map[12][12];//建立地圖

char used[12][12];//標記已經走過的點

char step[12][12];//標記走到該店時花了多少步

int sy,sx;//起始點

int ty,tx;//終點

void init();

int bfs();

int main()

} init();//初始化資料

num = bfs();

cout<=0 && vx<=12 && vy>=0 && vy<=12 && map[vy][vx]=='.' && used[vy][vx]==0)}}}

XTU C語言程式設計實踐作業6

1.排序n個整數,將其排序輸出。輸入第一行是乙個整數k 1 k 20 表示有多少個樣例,每個樣例的第一行是乙個整數n 1 n 1,000 和乙個字元x,x為a時表示公升序排序,為d時為降序排列 第二行為n個整數,每個整數都可以使用int表示,每個之間用乙個空格隔開。輸出每個樣例輸出一行,按排序要求輸...

《廈門大學「網宿杯「17屆程式設計競賽決賽》

e 思路 想到了三分加最短路來著,沒敢寫,因為不知道為什麼證明滿足三分。顯然求最大值是凸函式的極值。注意點 用非準確範圍來控制精度。然後這是凸函式的三分.code includeusing namespace std typedef long long ll typedef pair int pii...

計算機程式設計C MOOC(第6周程式設計作業)

本部落格內容為中國大學生mooc國家精品課程 計算機程式設計c 作業記錄,僅供參考,觀者忌照搬照抄,歡迎交流批評指正!第6周程式設計作業 本週作業內容為遞迴函式,內聯函式與過載函式 遞迴猴子摘桃 k是最後一天剩下的桃子個數,此例取1,n是天數 intmain 編寫內聯函式求矩形的面積和周長 編寫過載...