1:問題描述
problem description
在美式足球中,四分衛負責指揮整隻球隊的進攻戰術和跑位,以及給接球員傳球的任務。四分衛是乙隻球隊進攻組最重要的球員,而且一般身體都相對比較弱小,所以通常球隊會安排5-7名大漢來保護他,其中站在四分衛前方、排成一線的5名球員稱為進攻鋒線,他們通常都是135公斤左右的壯漢。
對防守方來說,攻擊對手的四分衛當然是最直接的限制對手進攻的方法。如果效果好,就可以在對方四分衛傳球之前將其按翻在地,稱之為擒殺。擒殺是最好的鼓舞防守隊士氣的方法,因為對方連傳球的機會都沒有,進攻就結束了,還必須倒退一些距離開球。**的擒殺甚至能夠將對方的四分衛弄傷,從而迫使對方更換這個進攻核心。
在本題中,輸入給出準備擒殺四分衛的防守球員的位置、對方每個進攻鋒線球員的位置以及對方四分衛的位置,你的任務是求出這名準備擒殺的防守球員至少要移動多少步,才能夠擒殺對方四分衛。
假設對方進攻鋒線和四分衛在這個過程中都不會移動。只有1名防守球員,防守球員只要碰到對方四分衛就算擒殺。
所有的球員都是一塊連續的、不中空的2維區域。防守球員不可以從進攻鋒線的身體上穿過,也不可以從界外穿過(只能走空地)。
防守隊員不可以轉動身體,只能平移。防守隊員的身體所有部分向同乙個方向(上、下、左、右)移動1格的過程叫做1步。
input
輸入包含多組資料。每組資料第一行都是兩個整數h,w(0< h,w<=100),表示整個區域的高度和寬度,h=w=0表示輸入結束。接下來有h行,每行w個字元。每個字元如果是』.』,表示這裡是空地,如果是』o』,表示是進攻鋒線隊員的身體,如果是』d』,表示是準備擒殺的防守球員的身體,如果是』q』,表示是四分衛的身體。
輸入保證符合上面的條件。防守球員的身體總共不超過20格。
output
對每組資料,輸出包含擒殺所需最少步數的一行。如果不能擒殺,輸出帶』impossible』的一行。
sample input
6 6.q….
qq..oo
.oo..o
…o.o
oo.o..
….dd
7 7.q…..
qq.ooo.
…o…o……
oo..oo.
.o…..
…..dd
0 0sample output
impossible
92:大致題意
移動d去找q,求最短步數。
3:思路
因為d,q都不止乙個,所以移動的時候d要同時移動,而且只要有乙個d碰到q就行,不可以轉身,只能平移。
一開始要將d的位置存在乙個陣列裡,移動的時候讓他們同時移動。
最後碰到q的時候結束就行啦啦啦~
4:感想
也是bfs,比上一道題簡單一點,思路很簡單,一步一步的平移,將4個方向遍歷,並且不能碰到o,不能越界。符合要求的話就放入佇列中。
5:ac**
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define inf 99999999
using
namespace
std;
const
int max=100+10;
char map[max][max];
int mark[max][max];
int dir[4][2]=;
int n,m,size;
struct node
node(int x,int y,int i)
}start;
int bfs(int &flag)
if(j != size)continue;
if(mark[next.x[0]][next.y[0]] == flag)continue;
next.time=now.time+1;
mark[next.x[0]][next.y[0]]=flag;
for(j=0;jif(map[next.x[j]][next.y[j]] == 'q')return next.time;
q.push(next);}}
return -1;
}int main()}}
start.time=0;
int temp=bfs(++num);
if(temp == -1)cout
<
cout
0;}
SDAU 搜尋專題 總結
這個專題主要有4個內容。1 二分法。找到最大值和最小值,取他們的中點mid。判斷mid這個點的值,從而改變左端點或者右端點。一直重複此過程。2 3分法。和二分法類似,找到左端點和右端點,取中點mid,然後再根據題意,取mid與右端點或者左端點的中點midmid。判斷mid這個點的值,從而改變左端點或...
SDAU 搜尋專題 08 猜數字
1 問題描述 problem description a有1數m,b來猜.b每猜一次,a就說 太大 太小 或 對了 問b猜n次可以猜到的最大數。input 第1行是整數t,表示有t組資料,下面有t行 每行乙個整數n 1 n 30 output 猜n次可以猜到的最大數 sample input 21 ...
SDAU 搜尋專題 17 非常可樂
1 問題描述 problem description 大家一定覺的運動以後喝可樂是一件很愜意的事情,但是seeyou卻不這麼認為。因為每次當seeyou買了可樂以後,阿牛就要求和seeyou一起分享這一瓶可樂,而且一定要喝的和seeyou一樣多。但seeyou的手中只有兩個杯子,它們的容量分別是n ...