扫雷
来源:互联网 发布:编程 开发 编辑:程序博客网 时间:2024/06/08 04:15
扫雷游戏是晨晨和小璐特别喜欢的智力游戏,她俩最近沉迷其中无法自拔。
该游戏的界面是一个矩阵,矩阵中有些格子中有一个地雷,其余格子中没有地雷。 游戏中,格子可能处于己知和未知的状态。如果一个己知的格子中没有地雷,那么该 格子上会写有一个一位数,表示与这个格子八连通相邻的格子中地雷总的数量。
现在,晨晨和小璐在一个3行N列(均从1开始用连续正整数编号)的矩阵中进 行游戏,在这个矩阵中,第2行的格子全部是己知的,并且其中均没有地雷;而另外 两行中是未知的,并且其中的地雷总数量也是未知的。
晨晨和小璐想知道,第1行和第3行有多少种合法的埋放地雷的方案。
该游戏的界面是一个矩阵,矩阵中有些格子中有一个地雷,其余格子中没有地雷。 游戏中,格子可能处于己知和未知的状态。如果一个己知的格子中没有地雷,那么该 格子上会写有一个一位数,表示与这个格子八连通相邻的格子中地雷总的数量。
现在,晨晨和小璐在一个3行N列(均从1开始用连续正整数编号)的矩阵中进 行游戏,在这个矩阵中,第2行的格子全部是己知的,并且其中均没有地雷;而另外 两行中是未知的,并且其中的地雷总数量也是未知的。
晨晨和小璐想知道,第1行和第3行有多少种合法的埋放地雷的方案。
每组数据由一行仅由数字组成的长度为N的非空字符串组成,表示矩阵有3行N 列,字符串的第i个数字字符表示矩阵中第2行第i个格子中的数字。
保证字符串长度N <= 10000,数据组数<= 100。
222000
61
模拟:将第一列地雷数量情况枚举,(只有0,1,2三种情况),然后就可以推出后面的炸弹数量,从而得出一个结果,最后判断是否成立即可
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int a[10001];char str[10001];const int mod=100000007;int main(){ int t; scanf("%d",&t); while(t--) { int n; scanf("%s",str); n=strlen(str); int i,j,k; for(i=0; i<n; i++) a[i+1]=str[i]-'0'; int ans=0; for(j=0; j<=2; j++) { int p=1; if(j==1) p=2; int d=a[1]-j,t=j;//t表示前一列放的炸弹数,d表示后一列放的炸弹数 for(i=2; i<=n; i++) { if(d<0||d>2) break; if(d==1) p=(p*2)%mod; int tt=t; t=d; d=a[i]-d-tt;//根据前一列和后一列的炸弹数,算出 后一列的后一列 的炸弹数 } if(i==n+1&&d==0) ans=(ans+p)%mod; } printf("%d\n",ans); } return 0;}
阅读全文
1 0
- 扫雷
- 扫雷
- 扫雷
- 扫雷
- 扫雷
- 扫雷
- 扫雷
- 扫雷
- 扫雷
- 扫雷
- 扫雷
- 扫雷
- 扫雷
- 扫雷
- 扫雷
- 扫雷
- 扫雷
- 扫雷
- Codeforces
- CISP国家注册信息安全专员
- ACM省赛海岛争霸(Dijkstra和DFS两种方法)
- TCP窗口控制、流控制、拥塞控制
- 物体检测“DSOD: Learning Deeply Supervised Object Detectors from Scratch”
- 扫雷
- Python
- 2017/08/23 备忘
- bzoj 3358: [Usaco2004 Jan]洪水
- 数据结构(一)-顺序存储结构的插入和删除:向指定位置的数组插入和删除元素
- Unity学习之路——C# 位操作、Flags、接口、抽象类
- flannel 概述
- ubuntu修改mysql默认路径和修改max_connect参数
- Spring boot 搭建个人博客系统(六)——文章点击量和阅读排行榜