深度優先搜尋 回朔 奇偶剪枝

2021-08-01 23:00:59 字數 1004 閱讀 3378

題目描述

題解 基本演算法思路就是深搜,不過會超時,因此得奇數偶數剪枝,就可以ac了。

/**

* > file name: dogmaze.cpp 深度優先搜尋加回朔加奇數偶數剪枝

* > author: yyhaker

* > created time: 2017/6/1

*/#include

#include

#include

#include

using

namespace

std;

int n,m,t;

char ch[10];

int maze[10][10];

int sx=0,sy=0,ex=0,ey=0; //起點和終點

int ok=false;

int da[4]=;

int db[4]=;

bool visit[10][10];

int count_=0;

void dfs(int a,int b)

if(count_>t||ok) return;

if((t-count_-abs(a-ex)-abs(b-ey))%2==1) return; //奇數偶數剪枝

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

}}int main()}}

ok= false;

//可走方塊是否比時間多,最短時間是否比t小,奇偶剪枝

if(n*m-wabs(sx-ex)+abs(sy-ey)>t||(t-abs(sx-ex)-abs(sy-ey))%2==1)

//dfs

count_=0;

visit[sx][sy]=1;

dfs(sx,sy);

if(ok) printf("yes\n");

else

printf("no\n");

}return

0;}

杭電ACM1010 深度優先搜尋 奇偶剪枝

乙個月之前,資料結構看完了深度和廣度搜尋,做這個搜尋題目的時候,總是超時,後來才知道可以進行剪枝可以判斷是否可以在t的時間內到達指定的地點。杭電1010這一題的題目大意是 一條狗進入乙個神奇的迷宮,一秒走乙個空白的地方,狗走過的地方會消失,也就是說狗不能往回走,門在t秒之後開啟,且開啟很短的時間,狗...

回溯法遵循深度優先嗎 深度優先搜尋(回溯法)

事實上,深度優先搜尋屬於圖演算法的一種,英文縮寫為dfs即depth first search.其過程簡要來說是對每乙個可能的分支路徑深入到不能再深入為止,而且每個節點只能訪問一次.舉例說明之 下圖是乙個無向圖,如果我們從a點發起深度優先搜尋 以下的訪問次序並不是唯一的,第二個點既可以是b也可以是c...

C 火柴棒問題 深度優先搜尋 剪枝

有乙個由火柴棒作為邊組成的n n 的格仔。n 5 按照下圖,給火柴棒編號。這是 n 3 的情況,其它情況類似 這是此圖鏈結 現在將移除某些火柴棒的狀態作為初始狀態,需要再移除一些火柴棒,以保證圖中乙個正方形也沒有。請求出所有需要移除火柴棒的最少根數。輸入格式 第一行乙個整數 t 表示測試資料個數。對...