红黑瓷砖问题

这是一个关于红黑瓷砖问题的解决方案,采用BFS(广度优先搜索)策略。问题涉及从输入数据中找到黑色瓷砖,通过扩散方法确定路径。代码实现包括主函数和BFS函数,使用队列进行搜索,当遇到黑色瓷砖(标记为'@')时,仅计算其出现一次的情况。
摘要由CSDN通过智能技术生成

红黑瓷砖问题

BFS广度优先搜索。来源hdu1312

问题描述:

有一个长方形的房间,覆盖着方形瓷砖。每块瓷砖的颜色是红色或黑色。一个人站在一块黑瓦上。从瓷砖,他可以移动到四个相邻的瓷砖之一。但他不能在红色瓷砖上移动,他只能在黑色瓷砖上移动。
编写一个程序,通过重复上述移动来计算他可以达到的黑色瓷砖
数量。

输入:

输入由多个数据集组成。数据集以包含两个正整数 W 和 H 的行开头:W 和 H 分别是 x - 和 y 方向中的瓷砖数量。W 和 H 不超过 20。
数据集中有更多的行,其中每个行都包含 W
字符。每个字符表示磁贴的颜色如下。"。"-黑色
瓷砖"#"-红色瓷砖
'@'-黑瓦上的人(在数据集中正好出现一次)
 

输出:

对于每个数据集,您的程序应输出一行,其中包含他可以从初始磁贴(包括自身)到达的磁贴数。

先将前置的类声明
#include<stdc++.h>

万能头文件,在include文件夹中添加<stdc++.h>文件,可以省略很多文件的声明。
该问题的难点在于如何判断每一段的公共子序列是否一致。先从声明字符串的长度起始,判断第一项的最长子序列。

代码如下:

// C++ includes used for precompiling -*- C++ -*-

// Copyright (C) 2003-2014 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.

// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值