CF 510B Fox And Two Dots 【DFS】

本文介绍了一个在CodeForces平台上的编程挑战题目——吃鸭游戏。游戏目标是在一个n*m的网格中寻找同色环。文章详细解释了问题背景、输入输出格式,并提供了一种深度优先搜索的解题思路及完整代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接:http://codeforces.com/problemset/problem/510/B

汉版:

花花 正在玩一个手机拼图游戏,被称之为 "吃鸭"。基础关卡是在一个大小为 n × m 的棋盘上游戏,类似于这样:

每个单元格包含了一个具有某种颜色的点。我们将使用不同的大写拉丁字符,表示不同的颜色。

这个游戏的关键是,找到同色环。例如,考虑图上的 4 个蓝色点,它们形成了一个环。正式地,我们将一个点序列 d1, d2, ..., dk 称作一个环 ,当且仅当它满足以下的条件:

  1. 这 k 个点不同:如果 i ≠ j 那么 di 与 dj 不同。
  2. k 至少是 4。
  3. 全部的点属于同一种颜色。
  4. 对于全部的 1 ≤ i ≤ k - 1: di 和 di + 1 邻接,且 dk 与 d1 也邻接。单元格 x 和 y 被称为邻接,如果它们共享一条边。

判断图中是否存在一个环 。

输入

第一行包含两个整数 n 和 m (2 ≤ n, m ≤ 50),分别表示棋盘上的行数和列数。

接下来的 n 行,每行包含一个字符串,该字符串含有 m 个字符,表示每行中的点的颜色。每个字符都是一个大写拉丁字母。

输出

如果存在一个环,则输出 "Yes" ,否则输出 "No" 。

示例

输入

3 4
AAAA
ABCA
AAAA

输出

Yes

输入

3 4
AAAA
ABCA
AADA

输出

No

输入

4 4
YYYR
BYBY
BBBY
BBBY

输出

Yes

输入

7 6
AAAAAB
ABBBAB
ABAAAB
ABABBB
ABAAAB
ABBBAB
AAAAAB

输出

Yes

输入

2 13
ABCDEFGHIJKLM
NOPQRSTUVWXYZ

输出

No

备注

在第一个示例中,全部的 'A' 形成了一个环。

在第二个示例中,不存在环。

第三个示例,如上图所示 ('Y' = 黄色, 'B' = 蓝色, 'R' = 红色)。

思路:感觉有点应付。

代码如下:

#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
int vis[60][60];
char map[60][60];
int dir[4][2]={1,0,-1,0,0,1,0,-1};
int n,m,flag,x0,y0;
void dfs(int x,int y,int num)
{
	vis[x][y]=1;
	if(flag)
	  return ;
	for(int i=0;i<4;i++)
	{
		int x1=x+dir[i][0];
		int y1=y+dir[i][1];
		if(x1==x0&&y1==y0&&num>=4)
		{
			flag=1;
			return ;
		}
		if(x1>=0&&x1<n&&y1>=0&&y1<m&&!vis[x1][y1]&&map[x1][y1]==map[x0][y0])
		  dfs(x1,y1,num+1);
	}
	return ;
}
int main()
{
	while(cin>>n>>m)
	{   
	    flag=0;
		memset(map,0,sizeof(map));
		
		for(int i=0;i<n;i++)
		  cin>>map[i];
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<m;j++)
			{
				memset(vis,0,sizeof(vis));
				x0=i;
				y0=j;
				dfs(i,j,1);
			}
		}
		if(flag)
		  cout<<"Yes"<<endl;
		else
		  cout<<"No"<<endl;
	}
	return 0;
}

 ps:这种题就得多写!

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在 IT 领域,文档格式转换是常见需求,尤其在处理多种文件类型时。本文将聚焦于利用 Java 技术栈,尤其是 Apache POI 和 iTextPDF 库,实现 doc、xls(涵盖 Excel 2003 及 Excel 2007+)以及 txt、图片等格式文件向 PDF 的转换,并实现在线浏览功能。 先从 Apache POI 说起,它是一个强大的 Java 库,专注于处理 Microsoft Office 格式文件,比如 doc 和 xls。Apache POI 提供了 HSSF 和 XSSF 两个 API,其中 HSSF 用于读写老版本的 BIFF8 格式(Excel 97-2003),XSSF 则针对新的 XML 格式(Excel 2007+)。这两个 API 均具备读取和写入工作表、单元格、公式、样式等功能。读取 Excel 文件时,可通过创建 HSSFWorkbook 或 XSSFWorkbook 对象来打开相应格式的文件,进而遍历工作簿中的每个 Sheet,获取行和列数据。写入 Excel 文件时,创建新的 Workbook 对象,添加 Sheet、Row 和 Cell,即可构建新 Excel 文件。 再看 iTextPDF,它是一个用于生成和修改 PDF 文档的 Java 库,拥有丰富的 API。创建 PDF 文档时,借助 Document 对象,可定义页面尺寸、边距等属性来定制 PDF 外观。添加内容方面,可使用 Paragraph、List、Table 等元素将文本、列表和表格加入 PDF,图片可通过 Image 类加载插入。iTextPDF 支持多种字体和样式,可设置文本颜色、大小、样式等。此外,iTextPDF 的 TextRenderer 类能将 HTML、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值