传送门  http://acm.hit.edu.cn/hoj/problem/view?id=1797

总体的思路是遍历可以到达的' . ',将其对应的vis数组化为1,然后统计所有为1的vis项;

①常用的加边法,防止越界

②初始化,不然两次相同的输入得到的结果会不同,由于是二维数组,能力有限,只好在结尾初始化,为下次输入做准备

③结束条件,递归函数一定要先写好结束条件,不然会炸

④上下左右四向移动

⑤直接递归函数调用自身

 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
char str[][];
char s[];
int vis[][];
int dx[]= {-,,,};
int dy[]= {,,,-};
int dfs(int x,int y)
{
int next_x,next_y,k;
if(str[x][y]=='#'||vis[x][y]||str[x][y]==) //③
return ;
vis[x][y]=;
for(k=; k<; k++) // ④
{
next_x=x+dx[k];
next_y=y+dy[k];
if(dfs(next_x,next_y)) // ⑤
return ;
}
return ;
}
int main()
{
int w,h,i,j,startx,starty,ans;
while(scanf("%d %d",&w,&h)!=EOF)
{
ans=;
if(w==&&h==)
break;
for(i=; i<=h; i++) // ①
{
scanf("%s",s);
for(j=; j<=w; j++)
{
str[i][j]=s[j-];
}
}
for(i=; i<=h; i++)
{
for(j=; j<=w; j++)
{
vis[i][j]=;
if(str[i][j]=='@')
{
startx=i;
starty=j;
break;
}
}
}
dfs(startx,starty);
for(i=;i<=h;i++)
{
for(j=;j<=w;j++)
{
//printf("%d ",vis[i][j]);
if(vis[i][j]==)
ans++;
}
//puts("");
}
for(i=;i<=h;i++) // ②
{
for(j=;j<=w;j++)
{
str[i][j]=;
vis[i][j]=;
}
}
printf("%d\n",ans);
}
return ;
}

HOJ 1797 Red and Black的更多相关文章

  1. HOJ题目分类

    各种杂题,水题,模拟,包括简单数论. 1001 A+B 1002 A+B+C 1009 Fat Cat 1010 The Angle 1011 Unix ls 1012 Decoding Task 1 ...

  2. 使用Red Gate Sql Data Compare 数据库同步工具进行SQL Server的两个数据库的数据比较、同步

    Sql Data Compare 是比较两个数据库的数据是否相同.生成同步sql的工具. 这一款工具由Red Gate公司出品,我们熟悉的.NET Reflector就是这个公司推出的,它的SQLTo ...

  3. 使用Red Gate Sql Compare 数据库同步工具进行SQL Server的两个数据库的结构比较、同步

    将测试版的项目同步(部署)到正式版的时候,两个数据库的结构比较与同步时,如果修改数据库的时候没有记录好修改了那些表,很难将两个数据库进行同步 RedGate Sql Compare使用简介说明: 1. ...

  4. 新年抢红包效果(New Year Red Packet)

    新年抢红包效果(New Year Red Packet) 晓娜的文章(微信公众号:migufe) 2016即将过去,我们将迎来新的一年2017,这里小编提前祝大家新年快乐!万事如意!那我们新年最开心的 ...

  5. KALI Linux problems & Study Red Hat | Ubuntu

    Problem When you ask some website with https head.you may met the problem  secure connection failed ...

  6. hoj 2662 经典状压dp // MyFirst 状压dp

    题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=2662 1.引言:用dp解决一个问题的时候很重要的一环就是状态的表示,一般来说,一个数组即可保存状态. ...

  7. Red Gate(SQLToolbelt)SQL Server的安装与注册(破解)

    Red Gate(SQLToolbelt)是SQL Server辅佐工具 1.SQL Compare 比较和同步SQL Server数据库结构 2.SQL Data Compare 比较和同步SQL ...

  8. Red Hat Enterprise Server 6.0 安装Sendmail相关包

    由于需要在Linux服务器(Red Hat Enterprise Linux Server release 6.0)上配置邮件服务,需要安装Sendmail包,一般Sendmail的安装有两种方式:R ...

  9. Red Hat Enterprise Linux 6.6安装体验

    Red Hat Enterprise Linux 6.6的安装首界面有五个选项,这跟以前的Red Hat Enterprise Linux 5.x的安装界面是有一些区别的.   安装或者升级现有系统( ...

随机推荐

  1. js中子页面父页面方法 变量相互调用

    (1)子页面调用父页面的方法或者变量: window.parent.方法()或者变量名window.parent相当于定位到父页面  之后的操作和在父页面中写代码一样写 window.parent.a ...

  2. 常用 Git 命令

    拉取远端仓库代码: 如果本地已经存在文件夹,先cd进去,然后敲命令: git fetch (作用是拉取远端仓库里的代码) git merge (作用是将远端仓库里的代码与本地仓库里的代码合并,如果有冲 ...

  3. 【去除NSString 字符串中的空格换行符】

    @interface NSString (DeletWhiteSpace) // 返回一个去掉前后空格的字符串或者下划线,如果自己是一个nil 返回@“” - (NSString *)trimming ...

  4. Android Studio上NDK/JNI开发环境问题

    基础环境: 操作系统 —— Windows 7 Android Studio —— 1.5.1(android-studio-bundle-141.2456560-windows.exe) NDK — ...

  5. IIS配置域用户自动登录

    1.首先确定IIS所在计算机是否已添加到域中:右击计算机->属性,在计算机名称,域,工作组设置中可看到计算机所在的域,若没有,可点击更改设置,再点击更改,选择要绑定的域即可(需要用域账户登录). ...

  6. SQLServer

    # 将检索到的数据插入到一张新表 SELECT * INTO <NEW_TABLE_NAME> FROM <OLD_TABLE_NAME>

  7. Ajax:一种网页开发技术(Asynchronous Javascript + XML)

    创建新的 XMLHttpRequest 对象(Ajax 应用程序的核心): <script language="javascript" type="text/jav ...

  8. 修改cmd的字体为Consolas字体

    Windows Registry Editor Version 5.00    [HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]    ...

  9. AC自动机专题

    AC自动机简介:KMP是用于解决单模式串匹配问题, AC自动机用于解决多模式串匹配问题. 精华:设这个节点上的字母为C,沿着他父亲的失败指针走,直到走到一个节点,他的儿子中也有字母为C的节点.然后把当 ...

  10. 上传图片预览JS脚本 Input file图片预览的实现示例

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...