洛谷 P2327 SCOI2005 掃雷

2022-02-14 17:23:04 字數 822 閱讀 7552

看起來我做的和其他題解不一樣

那就發一篇吧

首先本題情況看似無厘頭,但是仔細觀察,不難發現:

我們可以假設第一種情況,接著可以推出第二種

然後有了兩個已知的後,第三個顯而易見

如果你要問我怎麼推出來的嗎,我在裡面說的的邏輯判斷已經很明白了

#include#include

#include

#include

using

namespace

std;

int boom[10086

];int

ans;

int tj[10086

];int looker[10086

];int

n;int pdf() //

這段**是用當前推完的雷局反推右邊的數字,如果數字不一樣就說明這個雷局不是答案。(因為我們第一顆棋子是假設的)

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

if(looker[i]!=boom[i]) return0;

return1;

}void getnext(int

i)//

這是乙個判斷,這些邏輯的**是上面一格和二格以及上面一格右邊的數字,你可以在草稿紙上手推(反正我就是手推的)

else

//每一行都對應一種情況。括號裡是已知情況,括號外為推得當前的雷 tj[i]=1 就說明這個點有雷

return;}

int pd(int f) //

函式封裝,養成良好習慣

intmain()

這道題體現了草稿紙的重要性

洛谷 P2327 SCOI2005 掃雷

輸入格式 第一行為n,第二行有n個數,依次為第二列的格仔中的數。1 n 10000 輸出格式 乙個數,即第一列中雷的擺放方案數。輸入樣例 1 2 1 1 輸出樣例 1 2演算法1 列舉左邊每個位置是否有雷,複雜度o 2 n n 演算法2 我們發現,當前兩個位置確定時,後面的位置也就可以推出來了。於是...

洛谷P2327 SCOI2005 掃雷

輸入格式 第一行為n,第二行有n個數,依次為第二列的格仔中的數。1 n 10000 輸出格式 乙個數,即第一列中雷的擺放方案數。輸入樣例 1 2 1 1 輸出樣例 1 2迷之dp,如果沒看演算法標籤,可能會想岔到數學方向。乙個數字會影響它正左 左上 左下三個格仔的方案。考慮左邊和左上兩個方向的地雷數...

P2327 SCOI2005 掃雷 模擬

輸入格式 第一行為n,第二行有n個數,依次為第二列的格仔中的數。1 n 10000 輸出格式 乙個數,即第一列中雷的擺放方案數。輸入樣例 1 2 1 1 輸出樣例 1 2 思路 可根據左邊第乙個格仔和右邊第乙個格仔的方案 放or不放 推出左邊第二個格仔的方案,以此類推,最終可以推出左邊n個格仔的方案...