題意:就是三個傻明玩捉迷藏,小明負責找大的和二的,直線可以看見就算找到,人擋著人都不行!。。問小明可不可以在規定時間完成任務。
思路:就是正常的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 小明的媽媽生了三個孩子,老大叫大明,老二叫二明,老三.老三自然就叫小明了。一天,小明的媽媽帶小明兄弟三人去公園玩耍,公園裡面樹木很多,有很多地方可以藏身,於是他們決定玩捉迷藏。經過幾輪的猜拳後,第一輪是小明來找其他兩個人,遊戲規則很簡單 只要小明可以在規定的時...