BZOJ 1088 枚举 + 推
来源:互联网 发布:js监听事件开始和结束 编辑:程序博客网 时间:2024/05/21 08:01
1088: [SCOI2005]扫雷Mine
Description
相信大家都玩过扫雷的游戏。那是在一个n*m的矩阵里面有一些雷,要你根据一些信息找出雷来。万圣节到了,“余”人国流行起了一种简单的扫雷游戏,这个游戏规则和扫雷一样,如果某个格子没有雷,那么它里面的数字表示和它8连通的格子里面雷的数目。现在棋盘是n×2的,第一列里面某些格子是雷,而第二列没有雷,如下图: 由于第一列的雷可能有多种方案满足第二列的数的限制,你的任务即根据第二列的信息确定第一列雷有多少种摆放方案。
Input
第一行为N,第二行有N个数,依次为第二列的格子中的数。(1<= N <= 10000)
Output
一个数,即第一列中雷的摆放方案数。
Sample Input
2
1 1
Sample Output
2
很简单,只需要枚举第一个雷的情况,之后的状态可以推出来,详见代码:
#include <cstdio>#include <cstdlib>#include <iostream>#include <cstring>#define N 10010using namespace std;int n, ans = 0;int line1[N], line2[N];int main(void) { scanf("%d", &n); for(int i = 0; i < n; i++) scanf("%d", &line2[i]); for(int k = 0; k <= min(1, line2[0]); k++) { memset(line1, 0, sizeof(line1)); line1[0] = k; line1[1] = line2[0] - line1[0]; for(int i = 2; i <= n; i++) { line1[i] = line2[i - 1] - line1[i - 1] - line1[i - 2]; } if (line1[n] == 0) ans++;//最后要检验是否雷放完 } printf("%d\n", ans); return 0;}
1 0
- BZOJ 1088 枚举 + 推
- bzoj 1088(递推)
- BZOJ 1088 扫雷MIne 枚举
- 【递推】BZOJ 1088: [SCOI2005]扫雷Mine
- BZOJ 1088: [SCOI2005]扫雷Mine 枚举
- BZOJ 1218 枚举水
- BZOJ 1968 - 枚举约数
- bzoj 4292 枚举
- BZOJ 1045 && BZOJ 1465 【推式子乱搞
- bzoj 4318: OSU! 递推
- bzoj 1863 二分+递推
- bzoj 1801(递推)
- bzoj 1088: [SCOI2005]扫雷Mine (枚举+判定)
- BZOJ 3713 [PA2014]Iloczyn 枚举
- UVa11464偶数矩阵(部分枚举+递推)
- 部分枚举+递推+状态压缩+uva11464
- uva1382 - Distant Galaxy 部分枚举 递推
- UVA - 11464 Even Parity 枚举+递推
- OSG问题记录
- 成为程序员的一些基本"法则"
- 百度地图--定位
- JSON的解析[Java-JSON、FastJSON、GSON]
- Recycleview 使用中的问题
- BZOJ 1088 枚举 + 推
- 阅读程序(4)
- 家谱 并差集
- JAVA设计模式--原型模式
- 剑指Offer——字符流中第一个不重复的字符
- [drp 6]接口和抽象类的区别,及其应用场景
- 奶牛接力 矩阵乘法
- poj2352题解
- 使用 ormlite 操作已有数据库