1. 程式人生 > >BZOJ 1088 SCOI2005 掃雷

BZOJ 1088 SCOI2005 掃雷

n) == code print sca sco cnblogs 掃雷 return

DFS即可過~

#include <cstdio>
#include <algorithm>
#include <cstring>
 
int Map[10005],n,ban[10005],tot;
 
void dfs(int h){
    if(h>n){
        if(Map[h-1]+Map[h-2]==ban[h-1]) tot++;
        return;
    }
    if(h==1){
        dfs(h+1);
        Map[h]=1;
        dfs(h+1);
        Map[h]
=0; } else if(Map[h-1]+Map[h-2]==ban[h-1]){ dfs(h+1); } else if(Map[h-1]+Map[h-2]+1==ban[h-1]){ Map[h]=1; dfs(h+1); Map[h]=0; } else if(Map[h-1]+Map[h-2]+1 < ban[h-1] || Map[h-1]+Map[h-2]+1 > ban[h-1]) return; } int main(){ scanf(
"%d",&n); for(int i=1;i<=n;i++) scanf("%d",&ban[i]); dfs(1); printf("%d\n",tot); return 0; }

BZOJ 1088 SCOI2005 掃雷