前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >P2327 [SCOI2005]扫雷

P2327 [SCOI2005]扫雷

作者头像
attack
发布2018-04-12 14:29:36
6690
发布2018-04-12 14:29:36
举报
文章被收录于专栏:数据结构与算法

题目描述

输入输出格式

输入格式:

第一行为N,第二行有N个数,依次为第二列的格子中的数。(1<= N <= 10000)

输出格式:

一个数,即第一列中雷的摆放方案数。

输入输出样例

输入样例#1:

代码语言:javascript
复制
2
1  1

输出样例#1:

代码语言:javascript
复制
2

 ‘

我们用dp[i]表示左边的第i个位置是否有雷,

代码语言:javascript
复制
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<queue>
 6 #include<algorithm>
 7 #include<cstdlib>
 8 using namespace std;
 9 const int MAXN=10001;
10 void read(int &n)
11 {
12     char c='+';int x=0,flag=1;
13     while(c<'0'||c>'9')
14     {c=getchar();if(c=='-')flag=-1;}
15     while(c>='0'&&c<='9')
16     {x=x*10+c-48;c=getchar();}
17     n=(x*flag);
18 }
19 int k=1,m,n;
20 int i,j;
21 int a[MAXN],dp[MAXN];
22 int main()
23 {
24     read(n);
25     for(i=1;i<=n;i++)
26         read(a[i]);
27     for(i=2;i<=n+1;i++)
28     {
29         dp[i]=a[i-1]-dp[i-1]-dp[i-2];
30         if(dp[i]<0||dp[i]>1)
31         {
32             k=0;
33             break;
34         }
35     }
36     if(dp[n+1]!=0)k=0;
37     m+=k;
38     memset(dp,0,sizeof(dp));
39     k=1;
40     dp[1]=1;
41     for(i=2;i<=n+1;i++)
42     {
43         dp[i]=a[i-1]-dp[i-1]-dp[i-2];
44         if(dp[i]<0||dp[i]>1)
45         {
46             k=0;
47             break;
48         }
49     }
50     if(dp[n+1]!=0)k=0;
51     m+=k;
52     printf("%d\n",m);
53     return 0;
54 } 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-07-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
  • 输入输出格式
  • 输入输出样例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档