HDU 5965 扫雷
来源:互联网 发布:c语言中 x是什么意思 编辑:程序博客网 时间:2024/06/15 20:31
题目链接:点击打开链接
题意:一个3*n的矩阵,中间一行为数字(该点周围八个方向的雷数),中间一行没有雷,求有多少种摆放雷的方法。
个人理解:枚举第一列的雷数,然后来推其他列的
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;char s[10022];int dp[10022]; //记录每个i下的可行方案数int num[10022]; //存储第二行显示的雷数int b[10022]; //每列的雷数int main(){ int t; cin>>t; while(t--) { cin>>s; int l=strlen(s); memset(dp,0,sizeof(dp)); for(int i=0;i<l;i++) { num[i+1]=s[i]-'0'; } long long ans=0; for(int i=0;i<=min(num[1],2);i++) { dp[1]=(i==1?2:1); //第一列的情况,如果i==1,则有两种方案,否则为一种 b[1]=i; int flag=1; for(int j=2;j<=l;j++) { int dis=num[j-1]-b[j-2]-b[j-1]; //第j列的雷数 if(dis==0||dis==2) dp[j]=dp[j-1]; else if(dis==1) dp[j]=dp[j-1]*2%100000007; else //dis如果为负,则此方案错误,退出j的循环,开始下一次i的循环 { flag=0; break; } b[j]=dis; } if(flag&&b[l]+b[l-1]==num[l]) ans+=dp[l]; } cout<<ans%100000007<<endl; } return 0;}
阅读全文
0 0
- 扫雷 hdu 5965
- hdu 5965 扫雷
- 扫雷 HDU - 5965
- hdu 5965 (扫雷)
- HDU 5965扫雷
- HDU 5965 扫雷
- HDU 5965 扫雷 CCPC合肥
- HDU 5965 扫雷 By Assassin
- Hdu 5965 扫雷【思维+Dp】
- HDU --- 5965 扫雷 【dp + 思维】
- HDU 5965 扫雷 递推
- hdu 5965 扫雷(递推)
- hdu 5965 扫雷(递推)
- 2016ccpc 合肥站hdu 5965 扫雷
- hdu 5965 扫雷 ccpc 2016 合肥站
- HDU 5965 扫雷(递推+枚举)
- HDU 5965 扫雷(递推)
- HDU 5965 扫雷(递推)
- 区域赛 赛后总结和个人计划
- 快速求m^e mod n算法
- Uri.parse
- Effective Java
- python基础笔记1
- HDU 5965 扫雷
- 发布/订阅模式
- java语言程序设计 第十三章 (13.6、13.7)
- 在做自动化测试之前你需要知道的
- 记2017年《软件工程》学习体会
- Android 超简单音乐播放器(五) 发送歌曲信息到详情界面
- random()随机数的产生方式与原理
- 虚拟机类加载机制详解
- C语言中的fgets函数