簡單的bfs
注意以下幾點:
*思路首先分析可走的路的總數是否大於等於最短路徑數(最短路徑數=a+b+c-2),如果小於怎樣都無法到達出口
*所以可以直接輸出-1,還有總的時間數小於最短時間(最短時間數=a+b+c-2)也是無法到達出口,除去以上情況
*然後使用bfs進行搜尋就可以了
*如果想看**論壇有我就不貼了
鬱悶,做出來還是要1531ms
哎,**能力還是不行
code
#include
<
iostream
>
#include
<
queue
>
using
namespace
std;
struct
node
;int
map[
51][
51][
51];
inta,b,c,t,s;
bool
escape;
intdir[6][
3] =,,,,,};
void
bfs(
intx,
inty,
intz,
inttime)
if(n.t
>
t)break
;for
(inti =
0;i
<6;i
++)q.push(p);
map[tx][ty][tz] =1
;}}}
intmain()
escape
=false;if
((a*b*
c -wall
b+c-
2) ||(t
b+c-
3))bfs(0,
0,0,
0);if(escape)
printf(
"%d\n
",s);
else
printf(
"-1\n");
}return0;
}
ACM題解報告 HD1253
該題目是乙個比較經典立方體迷宮問題,要求在給定的時間內從始點 0,0,0 逃到出口 a 1,b 1,c 1 這裡我採用的是bfs 寬度優先搜尋 如下 includeusing namespace std int map 55 55 55 a,b,c,times,visit 55 55 55 int ...
Block Voting 解題報告
這道題做的有點狼狽,效率不高,差一點就tle的ac了。看status裡的,ac的時間大多數都是0ms的。肯定有乙個更有效率的演算法的。下面說下我的狼狽演算法。出處 http acm.jlu.edu.cn joj showproblem.php?pid 1223 問題描述 求每個party的權值。第i...
Safebreaker 解題報告
又是吉林大學一道acm題目,題目很簡單,直接暴力解決。出處 http acm.jlu.edu.cn joj showproblem.php?pid 1718 問題描述 對乙個給定數0000 9999 根據一系列猜測,判斷這個數是否存在,存在的話,是否唯一 例如 3321,給定數 作出猜測,1223 ...