传送门  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. IIS性能提升

    1. 调整IIS 7应用程序池队列长度 由原来的默认1000改为65535. IIS Manager > ApplicationPools > Advanced Settings Queu ...

  2. [Android Pro] 精确记录和恢复ListView滑动位置

    reference to : http://blog.csdn.net/welovesunflower/article/details/7926512 工作中遇到一个需求,对ListView某一项操作 ...

  3. iOS内支付

  4. android UI控件小记

    1.关于text和drawableTop之类的间距 android:drawablePadding="10dp" 2.EditText属性 android:phoneNumber= ...

  5. 2016年6月20日 JAVA知识框架

    基于 J2EE 列举的知识架构,大体列举开发基础知识.帮助我随时查缺补漏,奉行好记性不如烂笔头.写了这该随笔,以便后续查询. 1  JAVA简介 2  JAVA编程环境 3  JAVA基本编程结构 4 ...

  6. 名词含义阅读 todolist

    1.node webkit 2.C#设计模式 3.算法导论 4.SQLSERVER RowNum() 5.图片文字识别 6.tuple 7.yield 8.Web语义化 (多用 p ul ol li ...

  7. jQuery中的Ajax - Codeigniter版本

    发送(view中): $.ajax({ type : 'post', url : 'add', data : { 'nickname':nickname, 'mobile':mobile, 'sex' ...

  8. 【Java EE 学习 79 上】【mybatis 基本使用方法】

    一.简介 mybatis类似于hibernate,都是简化对数据库操作的框架,但是和hibernate不同的是,mybatis更加灵活,整体来说框架更小,这体现在它需要我们手写SQL语句,而hiber ...

  9. 剑指Offer-【面试题05:从头到尾打印链表】

    package com.cxz.question5; import java.util.Stack; /* * 输入个链表的头结点,从尾到头反过来打印出每个结点的值. * */ public clas ...

  10. 产品经理 - 移动支付+Pos收单分析

    产品经理 - 移动支付+Pos收单分析