🌈个人主页:羽晨同学 

💫个人格言:“成为自己未来的主人~” 

题目链接

 P2327 [SCOI2005] 扫雷 - 洛谷https://www.luogu.com.cn/problem/P2327

解题思路

对于扫雷这道题目来说,我们可以设置为两个数组,一个数组来存放信息,另外一个来进行检测,此外,其实检测数组的第一个数的内容确定的时候,则这个数组的所有内容就确定了,所以对这道题目来说,其实三个结果,要么1,要么0,要么2。

代码实现

#include<iostream>
using namespace std;
const int N = 1e4+10;
int a[N],b[N];
int n;
int check1()
{
	a[1]=0;
	for(int i=2;i<=n+1;i++)
	{
		a[i]=b[i-1]-a[i-1]-a[i-2];		
		if(a[i]<0||a[i]>=2)
			return 0;
	}
	if(a[n+1]==0) return 1;
	else return 0;
} 
int check2()
{
	a[1]=1;
	for(int i=2;i<=n+1;i++)
	{
		a[i]=b[i-1]-a[i-1]-a[i-2];		
		if(a[i]<0||a[i]>1) return 0;
	}
	if(a[n+1]==0) return 1;
	else return 0;
} 
int main()
{

	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>b[i];
	int res = 0;
	res+=check1();//a[1]放0
	res+=check2();//a[1]放1 
	cout<<res<<endl;
	return 0;	
} 

 好了,今天的内容就到这里,我们明天再见。

Logo

集算法之大成!助力oier实现梦想!

更多推荐