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的更多相关文章

  1. FZU1920 Left Mouse Button(dfs)

     Problem 1920 Left Mouse Button Accept: 385    Submit: 719 Time Limit: 1000 mSec    Memory Limit : 3 ...

  2. Left Mouse Button (bfs)

    Mine sweeper is a very popular small game in Windows operating system. The object of the game is to ...

  3. FZU 1920 Left Mouse Button 简单搜索

    题意就是扫雷 问最少多少次可以把图点开…… 思路也很明显 就是先把所有的标记一遍 就当所有的都要点…… 录入图…… 所有雷都不标记…… 之后呢 遍历图…… 然后碰到0就搜索一圈 碰到数字就标记…… 不 ...

  4. wx.button

    wx.Button A button is a control that contains a text string, and is one of the most common elements ...

  5. jQuery中有关mouse的事件--mousedown/up/enter/leave/over/out----2017-05-10

    mousedown:鼠标按下才发生 mouseup:鼠标按下松开时才发生 mouseenter和mouseleave效果和mouseover mouseout效果差不多:但存在区别,区别见代码解析: ...

  6. Javascript Madness: Mouse Events

    http://unixpapa.com/js/mouse.html Javascript Madness: Mouse Events Jan WolterAug 12, 2011 Note: I ha ...

  7. js & listen mouse click

    js & listen mouse click how to listen mouse click in js https://www.kirupa.com/html5/mouse_event ...

  8. Drag & drop a button widget

    In the following example, we will demonstrate how to drag & drop a button widget. #!/usr/bin/pyt ...

  9. [转]dojo/mouse

    dojo/mouse Authors:Kris Zyp Project owner:Kris Zyp since:1.7.0 Contents Usage enter leave mouseButto ...

随机推荐

  1. Android获得线性渐变某点的颜色

    安卓官方确实提供了好多非常强大的工具给我们了,例如我们最近经常在shape中加入gradient(渐变),像我的项目中用的是线性渐变, <?xml version="1.0" ...

  2. Qt 学习之路:线程和 QObject

    前面两个章节我们从事件循环和线程类库两个角度阐述有关线程的问题.本章我们将深入线程间得交互,探讨线程和QObject之间的关系.在某种程度上,这才是多线程编程真正需要注意的问题. 现在我们已经讨论过事 ...

  3. iOS UIScrollView 你可能不知道的奇技淫巧

    iOS 的 UIScrollView 可以说是十分强大,巧妙地运用它可以得到一些意想不到的效果.本文将举几个 ScrollView 不常见运用的例子. 自带信息应用 这个界面既可以上下卷动,也可以左右 ...

  4. Charles --- Mac 抓包工具

    安装 官方网站Charles 是一款收费软件,可以免费体验30天.网上有破解版. 使用 infoq 上有一篇很棒的教程:iOS开发工具——网络封包分析工具Charles 注意事项 这是我使用过程中遇到 ...

  5. Android(java)学习笔记201:网络图片浏览器的实现(ANR)

    1.我们在Android下,实现使用http协议进行网络通信,请求网络数据.这里是获取网络上的图片信息,让它可以显示在手机上: 但是我们这个手机连接网络是很费时间,如果我们在主线程(UI线程)中写这个 ...

  6. iOS UIKit:view

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css); @import url(/ ...

  7. 10.23 noip模拟试题

    尼玛蛋pdf好难粘 直接写了 T1 /*开始写wa了 我真弱2333 关于p的排序规则不只是差值 为了字典序最小 还要拍别的*/ #include<cstdio> #include< ...

  8. 关于一点coding.net与git配合在AndroidStudio/Idea上的使用笔记个的

    编写程序的我们经常需要对我们写的代码做版本控制,或者分支管理,具备类似功能的软件很多,诸如SVN,Git,CVS等等!但配置版本控制服务器(SVN server etc.)是繁琐的并且需要一定的成本! ...

  9. jsp-文件的上传(转).

    该程序的主要代码,我引用网友的,并做了一些改进.上这个帖子的原因之一,是为了修正之前自己的一些误解. 概述: 一些网友,包括我,也曾经试图通过 input type 为 file的控件,获取其文件的完 ...

  10. copssh加bitvise

    只是简单记录下自己在成功使用的方案: 目的:为了突破公司对网站和qq的限制 具备的条件:一台云服务器.Copssh_4.1.0.bitvise ssh client 4.62.公司电脑客户端 一.首先 ...