DFS深度優先搜尋演算法

2021-07-04 20:27:12 字數 1928 閱讀 3659

例題一:

題目大意:約翰的農場被暴風雨給淹沒了,損失很大,他的保險公司將支付給他,但是支付金額取決於被淹沒的最大面積。這個農場是乙個邊長分別為n、m的矩形,包含nm個空間,每個空間要麼是幹的,要麼是被淹沒的,一共有k個空間被淹沒。求最大的淹沒面積。

ac**:

#include #include #include using namespace std;

int a[110][110];

int num[110];

int ans,n,m;

void dfs(int x,int y) //深度優先搜尋

int main()

for(i=1;i<=n;i++)

for(j=1;j<=m;j++)

}sort(num,num+ans+1); //快排

printf("%d\n",num[ans]);

} return 0;

}

例題二:

題目大意:春天來了,湯姆有一塊包含n*m個方塊良田,他有乙個耕種機器(位於左上角),但是其中有一些方塊田地有大石塊,機器不能通過,然而他想把沒有石塊的全部良田耕種,可能嗎?

題目分析:首先利用字串建立地圖,找出所以有石塊的田地並計數,然後從左上角搜尋沒有石塊的良田並標記計數,然後判斷下一塊田地是否可以耕種,以此類推,直到不能再耕種,判斷所記的數目是否等於所有田地的總數目,(考查深度優先搜尋)。

ac**:

#include #include char str[10][10];

int n,m,sum;

bool flag;

void dfs(int x,int y) //深度優先搜尋

dfs(x-1,y);

dfs(x+1,y);

dfs(x,y-1);

dfs(x,y+1);

sum--;

str[x][y]='.';

}int main()

puts("");

return ; }

return ;

}int main()

word[1000];

void dfs(char c) //深度優先搜尋

for(int i=1;i

例題五:

題目大意:在有若干個城牆的n*n的城市裡建立大炮,大炮威力很大,除了城牆都能打透,所以兩門大炮不能在同一行,或同一列,除非中間有城牆隔著,問最多能建立多少個大炮。

題目分析:從左上角開始搜尋,判斷是否能安排大炮(此位置的上方和左方不能有大炮,除非有城牆隔著),能安排大炮就標記並統計大炮數目,以此類推,直到所有地方不能安排大炮,輸出最多安排大炮的數量。

ac**:

#include #include #include using namespace std;

char str[5][5];

int t,sum;

bool vis(int x,int y) //判斷此位置的上方,左方是否有大炮或者城牆

for(i=y-1;i>=0;i--)

return true;

}void dfs(int x,int y)

}else

dfs(x+1,y); //搜尋數目+1

}}int main()

a[11];

void dfs(int x,int y,int z) //深度優先搜尋

if(y>z||x==m) //價值超出,不符合條件

return ;

for(int j=0;j<=a[x].num;j++)

dfs(x+1,y+j*a[x].value,z); //遞迴

}int main()

{ int n,i,b=-1;

while(~scanf("%d%d",&n,&m))

{ for(i=0;i

深度優先搜尋演算法(DFS)

1.深度優先搜尋屬於圖的遍歷演算法的一種,英文縮寫為dfs即depth first search.其過程簡要來說是對每乙個可能的分支路徑深入到不能再深入為止,而且每個節點只能訪問一次。2.搜尋策略 深度優先遍歷圖的方法是,從圖中某頂點v出發 1 訪問頂點v 2 依次從v的未被訪問的鄰接點出發,對圖進...

DFS 深度優先搜尋演算法

深度優先搜尋演算法 depth first search,簡稱dfs 一種用於遍歷或搜尋樹或圖的演算法。沿著樹的深度遍歷樹的節點,盡可能深的搜尋樹的分支。當節點v的所在邊都己被探尋過或者在搜尋時結點不滿足條件,搜尋將回溯到發現節點v的那條邊的起始節點。整個程序反覆進行直到所有節點都被訪問為止。屬於盲...

深度優先搜尋演算法DFS

深度優先搜尋每一次搜尋都要走到底的 從左到右遍歷,每一次遍歷從上到下遍歷完 深度優先搜尋主要用遞迴實現,因此也很容易超時.回溯演算法實際上乙個類似列舉的搜尋嘗試過程,主要是在搜尋嘗試過程中尋找問題的解,當發現已不滿足求解條件時,就 回溯 返回,嘗試別的路徑。回溯法是一種選優搜尋法,按選優條件向前搜尋...