日常學習 深搜 codevs2452 掃雷題解

2021-07-03 19:29:12 字數 1445 閱讀 3834

題目描述 description

相信大家都玩過掃雷的遊戲。那是在乙個n*m的矩陣裡面有一些雷,要你根據一些資訊找出雷來。萬聖節到了,「餘」人國流行起了一種簡單的掃雷遊戲,這個遊戲規則和掃雷一樣,如果某個格仔沒有雷,那麼它裡面的數字表示和它8連通的格仔裡面雷的數目。現在棋盤是n×2的,第一列裡面某些格仔是雷,而第二列沒有雷,

由於第一列的雷可能有多種方案滿足第二列的數的限制,你的任務即根據第二列的資訊確定第一列雷有多少種擺放方案。

輸入描述 input description

第一行為n,第二行有n個數,依次為第二列的格仔中的數。(1<= n <= 10000)

輸出描述 output description

乙個數,即第一列中雷的擺放方案數。

樣例輸入 sample input 2

1 1

樣例輸出 sample output 2

可以在網上找到,格仔裡的數字可以是0,不影響做題

據說網上有深搜的,動歸的,還有模擬的。我這裡是深搜的做法。

思路就是深搜的經典思路,對於每乙個格仔填或不填進行搜尋,再消除影響。

**:

//mine 掃雷 暴搜第一課

//感謝里奧同學友情支援~

#include

#include

#include

using namespace std;

const int maxn=10000+10;

int a[maxn];

int b[maxn];

int n,ans=0;

void dfs(int pos,int state)

if (state==1)

a[pos]++;

//if (a[pos]>b[pos]) return;

if (pos+1<=n)

if ((a[pos-1]!=b[pos-1])||(a[pos]>b[pos])||(a[pos+1]>b[pos+1])) return;

if (pos==n)

dfs(pos+1,1);

if (pos>0) a[pos]--;

a[pos+1]--;

if (pos+2<=n) a[pos+2]--;

dfs(pos+1,0);

//if (pos-1>0) a[pos-1]--;

//a[pos]--;

//if (pos+1<=n) a[pos+1]--;

} else

if (pos==n)

dfs(pos+1,1);

if (pos>0) a[pos]--;

a[pos+1]--;

if (pos+2<=n) a[pos+2]--;

dfs(pos+1,0); }}

int main()

——漸霜風悽慘,關河冷落,殘照當樓。

深搜(2) 尋路 蛋糕

include include include include using namespace std struct rode int minlen 1 30,tallen,talcost 當前最優路徑長度,正在走的路的長度,花銷 vector cityway 105 cityway i 是從i有路...

2n皇后問題(深搜dfs)

基礎練習 2n皇后問題 問題描述 給定乙個n n的棋盤,棋盤中有一些位置不能放皇后。現在要向棋盤中放入n個黑皇后 和n個白皇后,使任意的兩個黑皇后都不在同一行 同一列或同一條對角線上,任意的兩 個白皇后都不在同一行 同一列或同一條對角線上。問總共有多少種放法?n小於等於8。輸入格式 輸入的第一行為乙...

opencv學習的日常積累(2)

6 計算輪廓的周長,刪除輪廓 int arclength contours i ture ture是閉合,false是開的 itr contours.erase itr 7 幾個常用函式的區別 pow double x,double y 返回值為double powf double x,double...