目录

蓝桥杯好题推荐-扫雷

蓝桥杯好题推荐—扫雷

https://i-blog.csdnimg.cn/blog_migrate/65e2c919493111fe0c134761ea131fab.png

🌈个人主页:

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

https://i-blog.csdnimg.cn/blog_migrate/8a9e7fcf23d9bad5b435af5495db19bd.gif

题目链接

[P2327 [SCOI2005] 扫雷 - 洛谷

https://csdnimg.cn/release/blog_editor_html/release2.3.8/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=P1C7 “P2327 [SCOI2005] 扫雷 - 洛谷”)

解题思路

对于扫雷这道题目来说,我们可以设置为两个数组,一个数组来存放信息,另外一个来进行检测,此外,其实检测数组的第一个数的内容确定的时候,则这个数组的所有内容就确定了,所以对这道题目来说,其实三个结果,要么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;	
} 

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

https://i-blog.csdnimg.cn/blog_migrate/11bb1b081a7b1f9ca3e7c66b7aa7764d.gif