BZOJ 1088 扫雷Mine

       这道题纯粹吓人的,看完题发现总共就两列,最开始想一个个进行枚举,发现费时费力还过不了,后来仔细一看,只要枚举前两个格子的四种情况后面的就全出来了,中间加个判断不符合减一就行了,结果绝对小于等于4。

       代码如下:

#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;
}
希望我的博客能给各位带来思路,谢谢。
posted @ 2015-07-26 18:19  wlxy  阅读(...)  评论(... 编辑 收藏