基礎搜尋01(poj2386)

2021-07-31 17:55:04 字數 773 閱讀 3277

好久都沒有寫過搜尋題了,典型的dfs,之前也做過專題訓練,寫起來也挺順手的,今日一練,還是發現了一點小小的疏忽

a.lake counting

思路:這就是一道典型的搜尋題,就是多了個斜對角的情況,除此之外沒有任何坑點和卡點,可以考慮直接用dfs來解決。題中也明確說明了每個區域可以有八個相鄰的方向,直接遍歷搜尋即可,注意一下邊界。

然而,心血來潮,考慮到邊的對稱性,因此將問題簡化為只考慮其中的四條邊,然而事實證明這種簡化過程是錯誤的,會篩掉u字形區域,可見每次簡化都需要經過深思熟慮,一點小小疏忽都會導致錯誤

/*

author:owen_q

*/#include using namespace std;

bool p[110][110];

int n,m;

void dfs(int x,int y)

if(p[x-1][y])

if(y+1=0&&p[x][y-1])

if(y+1=0&&p[x+1][y-1])

if(p[x+1][y])

if(y+1}

return ;

}int main()

else}}

int sum = 0;

for(int i=0;icout<}

cout << endl;*/}}

}printf("%d\n",sum);

}return 0;

}

POJ1010 搜尋題基礎

雖然也認同這題是基礎的搜尋題,但因做題太不熟練,寫了好久 include include include using namespace std const int n 4 const int nn 1000 int n,types,sum,maxz,a nn hash nn p n s n boo...

poj 2976 基礎01分數規劃

這個題算是01分數規劃的最基本的應用了,01分數規劃是給你n對數 a1,b1 an,bn 然後讓你選擇一些數對,使得sigma ai sigma bi 最大。這裡附上講解乙份,如下 include include include include include using namespace std...

最基礎的窮竭搜尋(2)

特殊狀態的列舉 雖然生成可行空間多數採用深度優先搜尋,但在裝態空間比較特殊時其實可以簡短的實現。比如,c 標準庫中提供了next permutation函式,它可以把n個元素共n 中不同的排列組合生成出來。又或者,通過使用位運算子,可以列舉出從n個元素中取出k個的所有情況,或某個集合的所有子集。in...