红与黑

有一个矩形房间,覆盖正方形瓷砖。每块瓷砖涂成了红色或黑色。一名男子站在黑色的瓷砖上,由此出发,可以移到四个相邻瓷砖之一,但他不能移动到红砖上,只能移动到黑砖上。编写一个程序,计算他通过重复上述移动所能经过的黑砖数(一开始站立的黑砖也要算)。

输入

开头行包含两个正整数W和H,W和H分别表示矩形房间的列数和行数,且都不超过20.
每个数据集有H行,其中每行包含W个字符。每个字符的含义如下所示:

'.'——黑砖
'#'——红砖
'@'——男子(仅出现一次)

输出

程序应该输出一行,包含男子从初始瓷砖出发可到达的瓷砖数

样例输入

6 9
....#.
.....#
......
......
......
......
......
#@...#
.#..#.

样例输出

45



#include <bits/stdc++.h>
using namespace std;
char mapp[21][21];
int r,c,vis[21][21],cnt;
int a[4]={1,0,-1,0};
int b[4]={0,1,0,-1}; 
struct xyint
{
	int x,y;
}s;
queue<xyint> q;

void bfs()
{
	xyint now,nextt;
	q.push(s);
	while(q.size())
	{
		now=q.front();
		q.pop();
		if(!(now.x>=0&&now.x<r&&now.y>=0&&now.y<c)) break;
		for(int i=0;i<4;i++)
		{
			nextt.x = now.x+a[i], nextt.y = now.y+b[i];
			if(!vis[nextt.x][nextt.y] && mapp[nextt.x][nextt.y]=='.' && nextt.x>=0 && nextt.x<r && nextt.y>=0 && nextt.y<c)
			{
				cnt++;
				vis[nextt.x][nextt.y]=1;
				q.push(nextt);
			}
		} 
	}
}

int main()
{

	cin >> c >> r;
	cnt=1;
	for(int i=0;i<r;i++)
	{
		for(int j=0;j<c;j++)
		{
			cin >> mapp[i][j];
			if(mapp[i][j]=='@')
			{
				s.x=i;
				s.y=j;
			}
		}
	}
	bfs();
	cout<<cnt;
	return 0;
}

原文链接:https://www.cnblogs.com/momotrace/p/red-and-black.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:红与黑 - Python技术站

(0)
上一篇 2023年5月9日
下一篇 2023年4月25日

相关文章

  • C语言实现客房管理系统

    C语言实现客房管理系统的完整攻略包含以下几个步骤: 设计数据结构和功能模块 首先需要设计客房管理系统的数据结构和功能模块。根据系统需要,可以设计出以下数据结构: Room:客房信息,包括客房号、类型、价格、当前状态(已入住或未入住)等。 Order:订单信息,包括客房号、入住时间、退房时间、客人姓名等。 根据这些数据结构,可以设计出以下功能模块: Check…

    C 2023年5月23日
    00
  • C语言实现猜拳游戏

    C语言实现猜拳游戏 简介 猜拳游戏是一种经典的多人休闲竞技游戏,通过手势的不同进行猜拳比赛。C语言可以用来实现猜拳游戏,下面就来介绍一下C语言实现猜拳游戏的方法。 实现步骤 定义变量 首先,我们需要定义一些变量,包括玩家与电脑的手势、输赢情况等信息。 int player; int computer; int result; 玩家输入 接着,需要让玩家输入一…

    C 2023年5月23日
    00
  • VS2017怎么打开CMake项目并配置?

    下面是详细讲解“VS2017怎么打开CMake项目并配置?”的完整攻略: 1. 安装 Visual Studio 2017 VS2017是微软推出的一款IDE,用于开发各种类型的应用程序。在使用 VS2017 打开 CMake 项目前,需要先下载并安装 VS2017。可从微软的官方网站下载安装。 2. 安装 CMake 工具 CMake是一个跨平台的开源构建…

    C 2023年5月23日
    00
  • C++第三方日志库Glog的安装与使用介绍

    下面是关于C++第三方日志库Glog的安装与使用介绍的完整攻略: 安装Glog 系统要求 安装Glog前,你需要拥有以下环境: 操作系统:Ubuntu/Debian或CentOS/RHEL 编译器:GCC 4.8或更高版本 步骤 下载安装依赖库 Glog依赖于很多库,需要先下载安装: Ubuntu/Debian: sudo apt-get install a…

    C 2023年5月23日
    00
  • C语言打印正方形实例代码

    请注意阅读以下内容: 打印正方形实例代码 在C语言中,使用循环语句可以轻松打印出正方形图形。下面是一份简单的C代码示例: #include <stdio.h> int main() { int i, j, num; printf("请输入要打印正方形的边长(1-20):"); scanf("%d", &am…

    C 2023年5月24日
    00
  • C语言 指针综合解析

    C语言指针综合解析攻略 什么是指针 指针是C语言中一个重要的概念,它可以让我们间接地访问和修改内存中的数据。 指针实际上是一个地址,这个地址是指向内存中一个特定的位置,它可以让我们对该位置的数据进行各种操作。 如何定义指针 在C语言中定义指针需要使用星号符号 *,这个符号在定义指针时放在变量名前面,例如: int *p; 上面的代码定义了一个指向 int 类…

    C 2023年5月23日
    00
  • C语言中的多态

    多态是面向对象编程中的一个重要概念,但是在C语言中并不是一种原生特性。然而,通过使用函数指针和结构体等技术,我们可以实现在C语言中实现多态。下面是一份详细的使用攻略: 什么是多态 多态是一种可以让不同对象具有不同行为的编程技术,它允许我们使用统一的接口处理不同类型的数据。在面向对象编程中,多态通常是通过继承和方法重写来实现的。在 C 语言中,则主要通过函数指…

    C 2023年5月10日
    00
  • PHP生成及获取JSON文件的方法

    这里为你详细讲解 PHP 生成和获取 JSON 文件的方法,包括示例说明。 一、生成 JSON 文件 生成 JSON 文件非常简单,我们只需要使用 PHP 的 json_encode() 函数将数据格式化为 JSON 字符串,再将其写入到文件中即可。 // 创建 PHP 数组 $data = array( ‘name’ => ‘Tom’, ‘age’ …

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部