題目描述 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...