ZOJ 1010 奇偶剪枝

2022-04-05 21:03:21 字數 1047 閱讀 6566

題目描述: 判斷在指定時間內dog是否能從制定開始位置走到制定結束位置。每走一步需要花費乙個單位時間(秒).題目涉及奇偶剪枝及dfs

演算法描述: 先判斷在哪些條件下不可達,即找出所有可能的剪枝,然後從當前位置的四個方向分別回溯,找出到達制定門的最短路徑

演算法**如下:

#include #include 

using

namespace

std;

typedef

struct

cord

point;

point sp,ep;

//sp:coordinate of start position,ep:coordinate of end position(door)

const

int max=7

;char

map[max][max];

bool bflag = false

;int

numwall;

int dir[4][2]=,,,};

intn,m,t;

int dis(point &p1, point &p2)

void dfs(point startp,int

t)

else

return

; }

else}}

}int

main()

else

if(map[i][j] =='d'

)

else

if(map[i][j] =='x'

) numwall++;}}

if(n*m-numwall > t && dis(sp,ep) <= t) //

基本剪枝

if(bflag)

cout

<<"

yes"

cout

<<"no"

<}

return0;

}

hdu 1010 dfs,奇偶剪枝

背景 熟悉dfs,第一次遇見了剪枝,各種剪枝。奇偶剪枝 開始一直超時,用了奇偶剪枝之後瞬間優化到312ms。對於乙個沒有障礙的圖,起點 s 到終點 的理想最短路徑是 而如果中間有障 礙物的話,路徑是在理想最短路徑上加上乙個偶數 可以證明 這樣可以看來,任何路徑和理想最短路徑是同奇偶的。這樣就可以剪去...

HDU1010 奇偶剪枝 DFS

第一次做剪枝的題目,剪枝,說實話研究的時間不短。好像沒什麼實質性的進展,遇到題目。絕對有會無從下手的感覺,剪枝越來越神奇了。hdu1010一道剪枝的經典題目,自己當初想用bfs過。提交了10幾遍wa,後來查了是剪枝最終死心了 ps 第一次寫剪枝題目,用了乙個模擬地圖來做奇偶性的判定條件進行剪枝,大牛...

HDU1010 奇偶剪枝 dfs)

the doggie found a bone in an ancient maze,which fascinated him a lot.however,when he picked it up,the maze began to shake,and the doggie could feel t...