Left Mouse Button
FZU:http://acm.fzu.edu.cn/problem.php?pid=1920
题意:叫你玩扫雷游戏,已经告诉你地雷的位置了,问你最少点几次鼠标左键可以赢这盘扫雷
题解:直接DFS,(注意这里是8个方向搜索不是4个方向),然后把0周围的不是雷的格子置0,然后统计不是0也不是雷的格子数量,然后加上之前DFS的数量就是答案。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
char mp[][];
int n;
int ans,px[],py[];
int top,s1[],s2[],num;
bool visit[][];
void DFS(int x,int y){//dfs寻找连通0的区域有多少个
int dir[][]={{,},{-,},{,},{,-},{-,-},{-,},{,-},{,}};
for(int i=;i<;i++){
int xx=x+dir[i][];
int yy=y+dir[i][];
if(xx>=&&xx<=n&&yy>=&&yy<=n){
if(mp[xx][yy]==''&&visit[xx][yy]==){
visit[xx][yy]=;
DFS(xx,yy);
}
}
}
}
int main(){
int test;
scanf("%d",&test);
int tt=;
while(test--){
ans=;
scanf("%d",&n);
memset(mp,-,sizeof(mp));
top=;num=;
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
cin>>mp[i][j];
if(mp[i][j]==''){
px[++top]=i; py[top]=j;
s1[++num]=i; s2[num]=j;
}
}
}
memset(visit,,sizeof(visit));
while(top>=){
int a=px[top];
int b=py[top--];
if(!visit[a][b]){
visit[a][b]=;
ans++;
DFS(a,b);
}
}
while(num>=){//把0周围的非雷格子至晨0
int a=s1[num];
int b=s2[num--];
if(a>=&&mp[a-][b]!=''&&mp[a-][b]!='@')
mp[a-][b]='';
if(a<n&&mp[a+][b]!=''&&mp[a+][b]!='@')
mp[a+][b]='';
if(b>=&&mp[a][b-]!=''&&mp[a][b-]!='@')
mp[a][b-]='';
if(b<n&&mp[a][b+]!=''&&mp[a][b+]!='@')
mp[a][b+]='';
if(a>=&&b>=&&mp[a-][b-]!=''&&mp[a-][b-]!='@')
mp[a-][b-]='';
if(a>=&&b<n&&mp[a-][b+]!=''&&mp[a-][b+]!='@')
mp[a-][b+]='';
if(a<n&&b>=&&mp[a+][b-]!=''&&mp[a+][b-]!='@')
mp[a+][b-]='';
if(a<n&&b<n&&mp[a+][b+]!=''&&mp[a+][b+]!='@')
mp[a+][b+]='';
}
for(int i=;i<=n;i++){//统计剩余需要点击的格子
for(int j=;j<=n;j++){
if(mp[i][j]!=''&&mp[i][j]!='@')
ans++;
}
}
printf("Case %d: %d\n",tt++,ans);
}
}
Left Mouse Button的更多相关文章
- FZU1920 Left Mouse Button(dfs)
Problem 1920 Left Mouse Button Accept: 385 Submit: 719 Time Limit: 1000 mSec Memory Limit : 3 ...
- Left Mouse Button (bfs)
Mine sweeper is a very popular small game in Windows operating system. The object of the game is to ...
- FZU 1920 Left Mouse Button 简单搜索
题意就是扫雷 问最少多少次可以把图点开…… 思路也很明显 就是先把所有的标记一遍 就当所有的都要点…… 录入图…… 所有雷都不标记…… 之后呢 遍历图…… 然后碰到0就搜索一圈 碰到数字就标记…… 不 ...
- wx.button
wx.Button A button is a control that contains a text string, and is one of the most common elements ...
- jQuery中有关mouse的事件--mousedown/up/enter/leave/over/out----2017-05-10
mousedown:鼠标按下才发生 mouseup:鼠标按下松开时才发生 mouseenter和mouseleave效果和mouseover mouseout效果差不多:但存在区别,区别见代码解析: ...
- Javascript Madness: Mouse Events
http://unixpapa.com/js/mouse.html Javascript Madness: Mouse Events Jan WolterAug 12, 2011 Note: I ha ...
- js & listen mouse click
js & listen mouse click how to listen mouse click in js https://www.kirupa.com/html5/mouse_event ...
- Drag & drop a button widget
In the following example, we will demonstrate how to drag & drop a button widget. #!/usr/bin/pyt ...
- [转]dojo/mouse
dojo/mouse Authors:Kris Zyp Project owner:Kris Zyp since:1.7.0 Contents Usage enter leave mouseButto ...
随机推荐
- dreamvc框架(一)ioc容器的集成
我的dreamvc框架最终写得差点儿相同了,借鉴了非常多开源框架,SpringMVC.Struts2等,眼下放在github上面.地址请猛戳我 写得差点儿相同了,是要写一个总结,把自己当时的思路记录下 ...
- 往另外1个ListView中添加当前选中的项目
//往另外1个ListView中添加当前选中的项目 function AddSelItems(listview1:TListView;ListView2:TListView):Boolean; ...
- Android编程动态创建视图View的方法
在Android开 发中,在Activity中关联视图View是一般使用setContentView方法,该方法一种参数是使用XML资源直接创 建:setContentView (int layout ...
- Linux下使用w命令和uptime命令查看系统负载
在Linux系统中查询系统CPU和内存的负载(使用率)时,我们通常习惯于使用top.atop或者ps,这篇文章将要给大家介绍如何使用w命令和uptime命令来查看系统的负载情况,对于uptime命令, ...
- 3 - SQL Server 2008 之 使用SQL语句删除约束条件
基本语法为: ALTER TABLE 表名 DROP CONSTRAINT 约束名1,约束名2…… 如果删除一个约束,不需要逗号后的约束名,如果删除两个及两个以上的约束,必须以逗号隔开. 使用上一节中 ...
- Java基础知识强化01:short s = 1; s = s + 1;与short s = 1; s += 1;
1.short s = 1; s = s + 1;有没有问题?如果有怎么解决? short s = 1; s += 1;有没有问题?如果有怎么解决? 2.理解: short s=1; s=s+ ...
- EXCEL插件
http://www.cnblogs.com/brooks-dotnet/category/233027.html http://www.360doc.com/content/15/0713/00/1 ...
- centos mysql 编译安装
centos mysql 编译安装 1.安装 创建MySQL用户 sudo useradd mysql 下载MySQL的源码包,我们这里使用的时5.5.18 安装依赖 sudo yum -y inst ...
- C#中关于webconfig的读写
近期一个小网站需要一个计数的信息 偷懒不想用别的什么方法 原本想用个xml 无奈不太会使 虽然不推荐这种方法 不过还是记下来方便日后查看 webconfig信息 <?xml version=&q ...
- 初识 Angular 体会
一句话描述:一个前端的类似MVC框架的JS库 刚接触2天,刚一看感觉和asp.net mvc能实现的功能有点重复. 虽然asp.net的表单验证,Razor语法使其在前端开发有较大提升,但要实现比较高 ...