FZU 1019猫捉老鼠
生活随笔
收集整理的這篇文章主要介紹了
FZU 1019猫捉老鼠
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
A -?貓捉老鼠 Time Limit:1000MS?????Memory Limit:32768KB?????64bit IO Format:%I64d & %I64u Submit?Status?Practice?FZU 1019
每組數據由10行組成,每行10個字符,表示迷宮的地圖以及貓和老鼠的初始位置。輸入數據保證只有一只貓和一只老鼠。
每組輸入數據之后均有一個空行作為間隔。?
Description
一只貓和一只老鼠在10*10的迷宮中。迷宮中的每個方格可以是空的,或者含有障礙。貓和老鼠可以進入任意一個空的方格中。當他們相遇時,貓和老鼠在同一個方格中。但是,無論貓或老鼠都不能進入有障礙的方格。我們可以用字符組成的二維數組表示迷宮,如下圖所示。
老鼠在迷宮中按照一種固定的方式行走:每個時刻,老鼠都向它所面對的方向前進一格,這需要花費1秒時間。如果前方是一個障礙或者是迷宮的邊界,它將花1秒的時間按順時針方向轉90度。
為了抓到老鼠,這只貓決定也按照與老鼠相同的行走方式行進。
貓和老鼠在每個單位時間內是同時行動的。因此,如果貓和老鼠在行進過程中“擦肩而過”,貓是無法捉到老鼠的。只有當貓和老鼠同時到達一個相同的格子時,貓才能捉住老鼠。?
初始時,貓和老鼠不會在同一個方格中。并且它們都面向北方。
你的任務是編一個程序,求出貓捉到老鼠的所花時間。
Input
輸入數據的第一行n,表示輸入數據的組數。每組數據由10行組成,每行10個字符,表示迷宮的地圖以及貓和老鼠的初始位置。輸入數據保證只有一只貓和一只老鼠。
每組輸入數據之后均有一個空行作為間隔。?
Output
對于每組給定的輸入,輸出一行僅含一個數,即貓捉到老鼠所花的時間。如果貓永遠都無法抓到老鼠,則輸出0。Sample Input
1 *...*..... ......*... ...*...*.. .......... ...*.c.... *.....*... ...*...... ..m......* ...*.*.... .*.*......Sample Output
49 AC Code: //Memory: 228 KB Time: 0 MS //Language: GNU C++ Result: Accepted#include <iostream> #include <cstdio> using namespace std;struct Point {int x, y; }mou, cat; //mouse,cat的坐標 int dm, dc; //分別為mouse和cat面朝的方向,0北,1東,2南,3西 char map[10][11]; //切記預留一位存儲‘\0’!T_T int t;//時間void Move (Point &animal, int &d) {int X,Y;if (d == 0){X = animal.x, Y = animal.y;if(!Y || map[Y-1][X] == '*')d++;elseanimal.y--;}else if (d == 1){X = animal.x+1, Y = animal.y;if (map[Y][X] == '\0' || map[Y][X] == '*')d++;elseanimal.x++;}else if(d == 2){X=animal.x, Y=animal.y;if(Y==9 || map[Y+1][X]=='*')d++;elseanimal.y++;}else{X=animal.x, Y=animal.y;if(!X || map[Y][X-1] == '*')d = 0;elseanimal.x--;} }int main() {int T;scanf("%d",&T);while(T--){t = dm = dc = 0;for(int i = 0; i < 10; i++){scanf("%s", map[i]);}for(int i = 0; i < 10; i++)for(int j = 0; j < 10; j++){if(map[i][j] == 'c'){cat.y = i;cat.x = j;}if(map[i][j] == 'm'){mou.y = i;mou.x = j;}}while (1){t++;Move (cat, dc);Move (mou, dm);if (cat.x == mou.x && cat.y == mou.y) break;if (t > 500){t = 0;break;}}printf ("%d\n", t);}return 0; }轉載于:https://www.cnblogs.com/cszlg/archive/2012/08/03/2910583.html
總結
以上是生活随笔為你收集整理的FZU 1019猫捉老鼠的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDU hdu 2094 产生冠军 拓
- 下一篇: 想知道毛戈平化妆品价格如何~