油田合併問題

2022-02-11 05:18:10 字數 1480 閱讀 2651

1. 問題描述

2. 思路及實現**

1. 問題描述

某石油公司發現了乙個油田。該油田由n*m個單元組成的矩形,有些單元裡有石油,有些則沒有。單元油田可以通過上,下,左或右連通。在乙個單元油田裡架設一台採油機,它可以把和該單元油田相連的單元油田的石油採完。該公司想知道最少需要架設幾台採油機能把所有的石油採完? 

示例輸入:

2 2 

@*2 2

@@@@

示例輸出:

2. 思路及實現**

廣度優先搜尋演算法實現。

//廣度優先搜尋演算法

#include 

<

iostream

>

#include 

<

stack

>

#include 

<

utility

>

using

namespace

std;

intmain()

stack

<

pair

<

int, 

int>

>

context;

intfirst, second;

for(

inti =0

; i 

<

rows; 

++i)

for(

intj =0

; j 

<

lines; 

++j)

//沒有標記過,並且是油田

//標記

//flag[i][j] = 2;

oils

++; 

//增加數量

context.push(make_pair(i, j));

//棧不空

while(!

context.empty())

if( ( (second -1

) >=0) 

&&(map[first][second -1

] =='@

') &&(

!flag[first][second -1

]))if

( ( (first +1

) <

rows ) 

&&(map[first +1

][second] =='

@') &&(!

flag[first +1

][second]) )

if( ( (second +1

) <

lines ) 

&&(map[first][second +1

] =='@

') &&(

!flag[first][second +1

]))}

}cout 

<<

oils 

<<

endl;

return0;

Oil Deposits(油田問題)

題意 找出地圖上的油層數,每個油層由多個油藏組成,這些油藏相鄰,常規的搜尋問題,每次向八個方向搜尋油藏。此處為dfs include include include include using namespace std intm,n char mp 105 105 void dfs int a,i...

問題 C 油田問題

題目描述 輸入乙個m行n列的字元矩陣,統計字元 組成多少個八連塊。如果兩個字元 所在的格仔相鄰 橫 豎或者對角線方向 即屬於同乙個八連塊。輸入多組輸入 輸入行數m,以及列數n。然後輸入 和 1 n,m 100 輸出聯通塊個數 就是將a陣列進行操作,把整個矩陣都遍歷一遍,在每次進行計算時都從是 開始進...

基礎搜尋題 油田合併 深度搜尋

某石油公司發現了乙個油田。該油田由n m個單元組成的矩形,有些單元裡有石油,有些則沒有。單元油田可以通過上,下,左或右連通。在乙個單元油田裡架設一台採油機,它可以把和該單元油田相連的單元油田的石油採完。該公司想知道最少需要架設幾台採油機能把所有的石油採完?輸入 先輸入2個正整數n,m 1 n,m 5...