zoukankan      html  css  js  c++  java
  • 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;
    }
    希望我的博客能给各位带来思路,谢谢。
  • 相关阅读:
    循环逗号分割数组!
    只是想好好学习一下!
    html元素水平垂直居中
    闭包知识点--笔记
    20160314
    从零开始做运维-零
    Nginx 和 CodeIgniter
    安装PIL库
    init
    NutUI3 多端实践之路
  • 原文地址:https://www.cnblogs.com/szy-wlxy/p/4678355.html
Copyright © 2011-2022 走看看