博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P2327 [SCOI2005]扫雷 枚举 搜索
阅读量:7071 次
发布时间:2019-06-28

本文共 1181 字,大约阅读时间需要 3 分钟。

洛谷P2327 [SCOI2005]扫雷

枚举 搜索
对搜索的 一些优化
其实我们只要枚举第一行是否有地雷,根据第1行探测出的地雷数,就可以推出第二行是否有地雷
然后在根据第二行探测地雷数推出第三行的情况,这样以此类推,一直推到第 n-1 的探测结果,
然后 推出第 n 行是否有地雷
如果在推的过程中 使得当前的探测地雷数为 负数 ,说明这个方法是萎的,
或者这一行推完了之后,还是有雷,那也退出,最后还要判断一下第 n 行是否有地雷

 

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 using namespace std ; 10 11 const int maxn = 100011 ; 12 int n,ans ; 13 int a[maxn],b[maxn] ;14 bool f[maxn] ;15 bool flag,ok ; 16 17 int main() 18 {19 scanf("%d",&n) ; 20 for(int i=1;i<=n;i++) 21 scanf("%d",&a[ i ]),b[ i ] = a[ i ] ; 22 flag = false ; 23 for(int i=0;i<=1;i++) 24 {25 for(int j=1;j<=n;j++) f[ j ] = 0,a[ j ] = b[ j ] ; 26 f[ 1 ] = i ; 27 if(f[1]) a[ 1 ]--,a[ 2 ]-- ;28 ok = false ; 29 for(int j=1;j<=n-1;j++) 30 {31 if( a[ j ]<0 ) 32 {33 ok = true ; 34 break ; 35 }36 if(a[ j ]>0) f[ j+1 ] = 1,a[ j ]--,a[j+1]--,a[j+2]-- ; 37 if(a[ j ]) 38 {39 ok = true ; 40 break ; 41 } 42 }43 if(ok) continue ; 44 if(a[n]) continue ; 45 ans++ ; 46 }47 printf("%d\n",ans) ; 48 return 0 ; 49 }

 

转载于:https://www.cnblogs.com/third2333/p/6962253.html

你可能感兴趣的文章
hadoop-
查看>>
团队博客
查看>>
4.Struts2中Action的三种访问方式
查看>>
delphi 10.3 IOS中英文错位
查看>>
初识RabbitMQ
查看>>
“Linux内核分析”实验二
查看>>
WCF使用MSMQ通信
查看>>
前后端分离djangorestframework——权限组件
查看>>
redis去重方案
查看>>
内连接和外连接
查看>>
RT-Thread--内核基础
查看>>
PC键盘在Mac下Command/Option键切换
查看>>
数字签名和验签的详细过程
查看>>
漫谈《信号与系统》
查看>>
POJ 1742 Coins(多重背包,优化)
查看>>
内容不随模态框滚动
查看>>
Flume+Kafka+SparkStreaming+Hbase+可视化(二)
查看>>
C语言中的结构体
查看>>
文本框只能输入数字
查看>>
netty实现TCP长连接
查看>>