poj 3009 冰壺 DFS 乙個方向搜查到底

2021-06-21 11:45:09 字數 669 閱讀 2274

題意:

冰壺可以上下左右運動(前提上下左右的第乙個位置為空)。碰到冰塊則停止,冰塊也將被破壞。問懂多少次能達到終點。

乙個方向搜到底:

**:#include #include using namespace std;

int map[30][30];

int w,h;

int minn=300000;

void dfs(int x,int y,int sum,int a,int b) //a,b記錄下一次運動的方向。

if(map[x+a][y+b]==0||map[x+a][y+b]==3)//如果下一次為空,接著運動。

dfs(x+a,y+b,sum,a,b);

else if(map[x+a][y+b]==1) //否則,停止,換方向。 }

int main()

}if(map[x+1][y]!=1) //判斷能否運動。

dfs(x,y,1,1,0);

if(map[x-1][y]!=1)

dfs(x,y,1,-1,0);

if(map[x][y+1]!=1)

dfs(x,y,1,0,1);

if(map[x][y-1]!=1)

dfs(x,y,1,0,-1);

if(minn<=10)

cout<

POJ 3009 簡單的dfs回溯遍歷搜尋)

注意行 與 列 的輸入時反過來的 然後就是障礙物被撞後會消失 但當回來時要恢復被撞的障礙物。只用了乙個簡單的剪枝 當區域性最優值大於當前最優值則剪枝 include include include include include include include include include inc...

poj 3009 深搜求最短路

題目大意就是求在特定規則下的最短路,這個規則包含了消除障礙的操作。用bfs感覺選擇消除障礙的時候不同路徑會有影響,用dfs比較方便狀態的還原 雖然效率比較低 因此這道題目採用dfs來寫。寫的第一次提交 是tle,原因是忘記總步數 10就應該剪枝的條件。ac 如下 1 include 2 includ...

OneBug 冰壺比賽(DFS)

題目 poj 3009 curling 2.0 題意 m n矩陣中,給出起點 終點 空格 障礙,從每個點可向4方前進,直到遇到障礙,打碎並停在障礙格的前面。求到達終點的最少前進次數。型別 dfs 記憶化搜尋 演算法 從某點出發,向4個方向投擲,遇到障礙格,標記其為空格狀態,繼續遞迴障礙前一點,回退恢...