BZOJ 1088 掃雷Mine

       這道題純粹嚇人的,看完題發現總共就兩列,最開始想一個個進行枚舉,發現費時費力還過不了,後來仔細一看,只要枚舉前兩個格子的四種狀況後面的就全出來了,中間加個判斷不符合減一就好了,結果絕對小於等於4。ios

       代碼以下:spa

#include<iostream>
#include<cstdlib>
#include<cstdio>
 
using namespace std;
 
int i_long;
int i_nob[10000];
int i_lei[10000],ans=4;
 
int main()
{
    cin>>i_long;
    for(int i=1;i<=i_long;i++)
    {
        cin>>i_nob[i];
    }
     
    for(int i=0;i<=1;i++)
    {
        for(int j=0;j<=1;j++)
        {
            i_lei[1]=i;i_lei[2]=j;
            for(int m=3;m<=i_long;m++)
            {
                i_lei[m]=i_nob[m-1]-i_lei[m-1]-i_lei[m-2];
            }
            for(int n=1;n<=i_long;n++)
            {
                if(i_lei[n]<0||i_lei[n-1]+i_lei[n]+i_lei[n+1]!=i_nob[n])
                {
                    ans--;
                    break;
                }
            }
        }
    }
     
    cout<<ans<<endl;
     
    return 0;
}
但願個人博客能給各位帶來思路,謝謝。
相關文章
相關標籤/搜索