時限: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 編寫內聯函式求矩形的面積和周長 編寫過載...