hdu4528,帶回路的廣度搜尋???

2021-10-02 01:37:45 字數 2885 閱讀 5790

果斷通不過這**的資料啊,居然還可以往回走

1

30 31 95

s..............................

..x............................

...x...........................

....x..........................

.....x.........................

......x........................

.......x.......................

........x......................

.........x.....................

..........x....................

...........x...................

............x..................

.............x.................

..............x................

...............x...............

................x..............

.................x.............

..................x............

...................x...........

....................x..........

.....................x.........

......................x........

.......................x.......

........................x......

.........................x.....

..........................x....

...........................x...

............................x..

.............................xe

..............................d

wrong code:
#include #include "stdio.h"

#include "queue.h"

#include "memory.h"

char map[105][105]; //定義圖的大小

int vit[105][105]; //圖結點訪問的判斷

int fangxiang[4][2]=; //四個方向

struct point

;queue q; //定義佇列

int bgx,bgy;

int flag,canseesum; //能夠看到的人數和flag標記是否能看到人

int n,m,t; //行,列,限制步數

int cango(int x,int y) //判斷是否是有效可走點

return 0;

}int cansee(int x,int y) //在當前位置上是否能看到人 ps:核心語句

else if(map[x][i]=='d'||map[x][i]=='e') //能看到大明、二明中的乙個

}for(i=y+1;i<=m;i++) //右看

else if(map[x][i]=='d'||map[x][i]=='e') //能看到大明、二明中的乙個

}for(j=x+1;j<=n;j++) //下看 //列不變行變

else if(map[j][y]=='d'||map[j][y]=='e') //能看到大明、二明中的乙個

}for(j=x-1;j>=1;j--) //上看

else if(map[j][y]=='d'||map[j][y]=='e') //能看到大明、二明中的乙個

}return sum;

} //------------------------------------

int bfs(void) //廣度優先搜尋開始

if(now.step>t) //剪枝

int newx,newy;

int i;

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

} }

}using namespace std;

int main(int argc, char *ar**)

scanf("%d%d%d",&n,&m,&t); //行,列,次數

int i2,j2;

for(i2=1;i2<=n;i2++)}}

//------------------------------

point start;

start.x=bgx;

start.y=bgy;

start.step=0;

vit[bgx][bgy]=1;

start.seesum=cansee(bgx,bgy);

q.push(start); //開始結點放入佇列

flag=0;

int ministep=-1;

//--------------------------------

ministep=bfs(); //開始廣搜

if(flag==0)

else

} return 0;

}

HDU 4528 小明系列故事 捉迷藏

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

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

題意 就是三個傻明玩捉迷藏,小明負責找大的和二的,直線可以看見就算找到,人擋著人都不行!問小明可不可以在規定時間完成任務。思路 就是正常的bfs,只不過有些細節處理需要注意,比如能否看到大明二明,保證兩點中間都是 還有就是去重,這裡需要注意,小明是可以走回頭路的,比如大明在左上,二明在右上,小明就要...

HDU4528 小明系列故事 捉迷藏 BFS

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