hdu 4528小明系列故事 捉迷藏 (bfs)

2021-07-06 11:32:58 字數 1356 閱讀 9652

題意:就是三個傻明玩捉迷藏,小明負責找大的和二的,直線可以看見就算找到,人擋著人都不行!。。問小明可不可以在規定時間完成任務。

思路:就是正常的bfs,只不過有些細節處理需要注意,比如能否看到大明二明,保證兩點中間都是' . '  還有就是去重,這裡需要注意,小明是可以走回頭路的,比如大明在左上,二明在右上,小明就要先左走再回來右走,所以二維vis陣列不可取,,但是仍然要去重,因為如果在同一點,小明找到的人不變的話,現在就是重複的計算,所以要開四維vis陣列去重。

題目不是很難,但小細節處理太冗雜,我真是越來越毛躁了,越做不出來越著急做出來,心急看到結果,所以中間很多都是趕時間沒多想寫的,導致了很多錯誤,反而浪費了時間,下回還是記得要耐心。。沉著。。冷靜。。。。小明真的好煩,真的。

#include #include #include #include #include #include #include #include #include #define lld long long

#define inf 0x3f3f3f3f

using namespace std;

char mp[110][110];

bool vis[110][110][2][2]; //四維儲存,,很重要的去重

int t,dx,dy,ex,ey,sx,sy;

int res;

struct node

;int ddx[4]=;

int ddy[4]=;

bool check(int ii,int l,int a,int b)

break;

case 2:

for(i=a;i<=b;i++)

if(mp[i][l]!='x' && mp[i][l]!='e')

ok=1;

else

break;

case 3:

for(j=a;j<=b;j++)

if(mp[l][j]!='x' && mp[l][j]!='d')

ok=1;

else

break;

case 4:

for(i=a;i<=b;i++)

if(mp[i][l]!='x' && mp[i][l]!='d')

ok=1;

else

break;

} return ok;

}void bfs()

for(int i=0;i<4;i++)}}}

int main()

bfs();

printf("case %d:\n",cas);

printf("%d\n",res);

} return 0;

}

HDU 4528 小明系列故事 捉迷藏

小明的媽媽生了三個孩子,老大叫大明,老二叫二明,老三.老三自然就叫小明了。一天,小明的媽媽帶小明兄弟三人去公園玩耍,公園裡面樹木很多,有很多地方可以藏身,於是他們決定玩捉迷藏。經過幾輪的猜拳後,第一輪是小明來找其他兩個人,遊戲規則很簡單 只要小明可以在規定的時間內找到他們就算小明獲勝,並且被發現的兩...

HDU4528 小明系列故事 捉迷藏 BFS

小明的媽媽生了三個孩子,老大叫大明,老二叫二明,老三 老三自然就叫小明了。一天,小明的媽媽帶小明兄弟三人去公園玩耍,公園裡面樹木很多,有很多地方可以藏身,於是他們決定玩捉迷藏。經過幾輪的猜拳後,第一輪是小明來找其他兩個人,遊戲規則很簡單 只要小明可以在規定的時間內找到他們就算小明獲勝,並且被發現的兩...

hdu4528 小明系列故事 捉迷藏 解題報告

problem description 小明的媽媽生了三個孩子,老大叫大明,老二叫二明,老三.老三自然就叫小明了。一天,小明的媽媽帶小明兄弟三人去公園玩耍,公園裡面樹木很多,有很多地方可以藏身,於是他們決定玩捉迷藏。經過幾輪的猜拳後,第一輪是小明來找其他兩個人,遊戲規則很簡單 只要小明可以在規定的時...