zoukankan      html  css  js  c++  java
  • hdu 5965 扫雷

    题意:三行n列的棋盘,给出第二列的每个格子的雷数a[i](代表周围八个格子的地雷数量,中间那一行肯定没地雷),问有多少种放雷方案

    思路:每一列只能放0,1,2,我们对于第一列进行枚举,dp[i]代表每一列雷数目,所以dp[2]=a[1]-dp[1],dp[3]=a[2]-dp[1]-dp[2]...所以每一列是确定的

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 const ll mod=1e8+7;
     5 
     6 int a[10004];
     7 int dp[10004];
     8 int n;
     9 
    10 ll hh(int x){
    11     memset(dp,0,sizeof(dp));
    12     dp[1]=x;
    13     dp[2]=a[1]-dp[1];
    14     if(dp[2]<0||dp[2]>2) return 0;
    15     for(int i=3;i<=n;i++){
    16         dp[i]=a[i-1]-dp[i-1]-dp[i-2];
    17         if(dp[i]<0||dp[i]>2) return 0;
    18     }
    19     if((dp[n-1]+dp[n])!=a[n]) return 0;
    20     ll s=1;
    21     for(int i=1;i<=n;i++){
    22         if(dp[i]==1) s=s*2%mod;
    23     }
    24     return s;
    25 }
    26 char s[10002];
    27 int main(){
    28     int t;
    29     cin>>t;
    30     while(t--){
    31         scanf("%s",s+1);
    32         n=strlen(s+1);
    33         for(int i=1;i<=n;i++) {
    34             a[i]=s[i]-'0';
    35         }
    36         ll sum=0;
    37         for(int i=0;i<3;i++)
    38             sum=(sum+hh(i))%mod;
    39         printf("%lld
    ",sum);
    40     }
    41     return 0;
    42 }
  • 相关阅读:
    内部类
    三大修饰符:static、final、abstract
    面向对象三大特性
    类和方法
    Vue-创建工程+element UI
    xshell连接虚拟机较慢问题 -----已解决
    Hbase配置
    Hive的安装配置
    Hive内容+配置
    Redis全局命令
  • 原文地址:https://www.cnblogs.com/hhxj/p/7607154.html
Copyright © 2011-2022 走看看