problem: 找貓貓
time limit: 1s mem limit: 64 mb
problem description
貓貓和嘟嘟一起打遊戲, 貓貓被困在了m點不能移動,每一秒減少乙個單位的hp, 需要隊友嘟嘟來救。但是現在嘟嘟不在貓貓旁邊,而是在遠離貓貓的另乙個d點。當貓貓的hp變成負數之後,貓貓的人物就會死亡,而貓貓就會不高興。為了讓貓貓能繼續玩下去, 嘟嘟需要馬上到m點去救貓貓(嘟嘟到達後可以讓貓貓的hp增加並且可以離開m點)。
現在給你這個n*m的遊戲地圖, d代表嘟嘟的位置,m代表貓貓的位置,*代表可以走的路,#代表不能翻越的牆。已知現在貓貓的hp為t個單位,嘟嘟每1秒只能移動1個格仔,只能走上下左右四個方向(不能斜著走,即四聯通) 。
現在問你,嘟嘟能不能在貓貓hp變為負數之前到達m點? 如果能到達,請輸出貓貓最小損失的hp。不然,遊戲結束,貓貓很生氣,嘟嘟會跪機械鍵盤的,所以就要輸出一行字串:「omg! dudu is bound to kneel keyboard」(沒有引號)。
input
第一行乙個整數t,代表有t組資料。
每組資料的第一行有三個整數m, n, t,分別表示地圖的行數、地圖的列數和貓貓的hp。 (0<=m,n<=10 0<=t<=100)
接下來有m行資料,每行n個字元,代表乙個mn的矩陣,矩陣有且僅有』d』 』m』 『』 『#』字元組成(沒有引號)
output
如果嘟嘟能在貓貓hp變為負數之前到達m點,則輸出貓貓損失的最小hp。
否則輸出「omg! dudu is bound to kneel keyboard」(沒有引號)
sample input
23 3 10
d**#
#m*3 3 2
d**#
#m*sample output
5omg! dudu is bound to kneel keyboard
這是一道廣度優先搜尋的例題,深度優先搜尋雖然可以得出答案但是容易超時,廣度優先搜尋的思路是從起點開始向可以走的方向輻射出去搜尋,搜到終點時停止。廣度優先搜尋一旦搜尋到終點就肯定是最短路徑,相比深度優先搜尋來說記憶體占用多一些,但是快得多。
下面是bfs解法**:
#include
#include
#include
#include
using
namespace std;
typedef
long
long ll;
const
int m =
1005
;const
int inf =
0x3f3f3f3f
;struct node
;queue q;
int maze[15]
[15], m, n, t, x, y;
// maze記錄已經去過的點,防止重複遍歷,m和n是長和寬,t是最大hp,x和y是終點座標
// 廣度優先搜尋
void
bfs(
)// 四方向搜尋
if(nx >=1&&
!maze[nx-1]
[ny]);
maze[nx-1]
[ny]=1
; q.
push
(ptt);}
if(nx <= m &&
!maze[nx+1]
[ny]);
maze[nx+1]
[ny]=1
; q.
push
(ptt);}
if(ny >=1&&
!maze[nx]
[ny-1]
);maze[nx]
[ny-1]
=1; q.
push
(ptt);}
if(ny <= n &&
!maze[nx]
[ny+1]
);maze[nx]
[ny+1]
=1; q.
push
(ptt);}
}// 終點屬於不能到達的型別,可去的點全部搜尋完畢也無法到達,輸出失敗結果
printf
("omg! dudu is bound to kneel keyboard\n");
}int
main()
; q.
push
(pt);}
else
if(line[j-1]
=='m'
)else
if(line[j-1]
=='#'
) maze[i]
[j]=1;
}}// 開始bfs計算
bfs();
}return0;
}
在做類似這種題目時,建議使用廣搜節省時間。 東北大學數學建模課程
一 綜合評價模型與層次分析法 a.分類對研究物件的全部個體分類 但又不同於復合分組 重疊分組 復合分組體系就是將總體按兩個或兩個以上的標誌結合起來進行層疊分組,形成復合分組體系。具體地說,它是先按乙個標誌分組,再按另乙個標誌對已經分好的各個組進行再分組。例如,對某校學生先按專業分組,再按性別分組 工...
東北大學 自控原理十套卷
簡言 師弟師妹們,我現在是系統工程 17 碩士,我的名字叫任士博。轉眼望去,在東大的七載時光還有半年就要過去了,我思索著能為學校做點什麼,想來想去也只有自己兩年前做的自控考研資料最能體現我的熱切情懷。當時我是大學畢業寫的這些資料,也就是讀研究生前期,自動控制原理也是自己本科學的比較好的一門課程,師弟...
東北大學2023年C語言程式設計
第一題 5餘1,6餘5,7餘4,11餘10的最小數 include define max 1000000 int main return 0 第二題 輸入乙個字串,統計大寫小寫字元個數,並將大寫字元反序輸出 include include define maxsize 100 void revers...