LETTERS

2023-10-30

http://poj.org/problem?id=1154

Description

A single-player game is played on a rectangular board divided in R rows and C columns. There is a single uppercase letter (A-Z) written in every position in the board.
Before the begging of the game there is a figure in the upper-left corner of the board (first row, first column). In every move, a player can move the figure to the one of the adjacent positions (up, down,left or right). Only constraint is that a figure cannot visit a position marked with the same letter twice.
The goal of the game is to play as many moves as possible.
Write a program that will calculate the maximal number of positions in the board the figure can visit in a single game.

Input

The first line of the input contains two integers R and C, separated by a single blank character, 1 <= R, S <= 20.
The following R lines contain S characters each. Each line represents one row in the board.

Output

The first and only line of the output should contain the maximal number of position in the board the figure can visit.

Sample Input

3 6
HFDFFB
AJHGDH
DGAGEH

Sample Output

6



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
这道题不是多组输入,只是单组输入,如果写成多组输入后就会出现Output Limit Exceeded,这应该算是一篇比较简单dfs,代码中的一大亮点是map标记数组的应用,很精奥。
#include<stdio.h>
#include<string.h>
#define NN 30
#define MAX(a,b) (a)>(b)?(a):(b)
int m,n,ans;
char huiyao[NN][NN];
int ope[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
int map[27];
void dfs(int x,int y,int step)
{
int xl,yl,l;
ans=MAX(ans,step);
map[huiyao[x][y]-'A']=0;
for(l=0;l<4;l++)
{
xl=x+ope[l][0];
yl=y+ope[l][1];
if(xl<0||yl<0||xl>=m||yl>=n)
    continue;
if(map[huiyao[xl][yl]-'A']==0)
   continue;
        map[huiyao[xl][yl]-'A']=0;
        dfs(xl,yl,step+1);
        map[huiyao[xl][yl]-'A']=1;
}

}
int main()
{
int i,j,k;
scanf("%d%d",&m,&n);

getchar();
memset(map,0,sizeof(map));
for(i=0;i<m;i++)
scanf("%s",huiyao[i]);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
map[huiyao[i][j]-'A']=1;
}
}
ans=1;
dfs(0,0,1);
printf("%d\n",ans);
/*for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%c",huiyao[i][j]);
}
printf("\n");
}*/
return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LETTERS 的相关文章

  • javascript - 从输入类型=文件获取文件名和扩展名

    我有一个文件上传输入 当我单击浏览按钮并选择文件时 我希望文件名和扩展名显示在两个输入文本框中 请参阅代码示例 它与扩展名一起正常工作 但文件名还显示了给我 fakepath 警告的路径 我明白为什么 但是有什么好方法可以做到这一点并将文件
  • 逐行读取文件而不是逐字读取文件

    我正在尝试编写一些代码来扫描输入文件中的回文 但它从每个单词而不是每行获取字符串 一个例子是赛车会显示为racecar 回文或太热而不能叫 回文 但相反它会显示为too 不是回文 hot 不是回文等等 这是我当前正在执行的读取文件的操作 F
  • HTML 时间输入类型 - 如何在单击任意位置而不仅仅是单击时钟图标时选择时间菜单视图

    I working on the time input type in HTML my problem is when I click on the small clock icon on the right side of the inp
  • 如何在maven antrun插件中执行输入任务

    我创建了一个 Maven 项目 我正在尝试运行外部脚本 在此外部脚本中 我使用 read 命令来提出问题并获得答案 如果我做一个 它会起作用sudo mvn 包 with 执行 maven 插件 http www mojohaus org
  • 将字符串转换为个位数并求和

    我花了几个小时尝试寻找解决方案来完成我认为很简单的任务 但我失败了 我有一个由 3 个不同字符组成的字符串 I R O 长度从 1 到 6 E g IRRROO RRORRR IIR RIRRO 每个字符代表一个数字I 1 R 2 O 3我
  • Emacs lisp:将字符翻译为标准 ASCII 转录

    我正在尝试编写一个函数 将包含 unicode 字符的字符串转换为某种默认的 ASCII 转录 理想情况下 我想要例如 ngstr m成为Angstroem或者 如果不可能的话 Angstrom 同样地 应该成为a x c 或类似的 Ema
  • 如何将批处理变量设置为另一个脚本的输出

    我尝试将批处理变量设置为另一个命令的输出 在 Linux Unix 中 您可以简单地使用反引号 例如 在 csh 中 set MY VAR tail etc passwd windows 批处理中有类似的东西吗 实际上我已经发现了一些东西
  • 非数字输入导致死循环

    由于某种原因 如果用户输入了错误的数据类型 例如 j 或 循环将停止要求输入并继续显示 Enter an integer gt 一遍又一遍 如何让程序处理错误的输入 为什么输入非数字值会导致如此奇怪的行为 define SENTINEL 0
  • 字典条目被覆盖? [复制]

    这个问题在这里已经有答案了 我发现一些输入没有存储在 Python 3 的字典中 运行这段代码 N int input How many lines of subsequent input graph for n in range N st
  • 如何循环用户输入直到输入整数?

    我想运行一个交互式程序 提示用户输入学生人数 如果用户输入除整数之外的字母或其他字符 则应再次询问他们 输入学生人数 我有以下代码 public int createArrays Scanner s int size System out
  • C 中的字符计数

    我正在尝试编写一个程序来计算字符串中的所有字符 我本来有它 但后来意识到我无法计算空格 我不明白为什么这不起作用 for m 0 z m 0 m if z m charcount 任何帮助表示赞赏 编辑 如果像这样扫描输入 字符串 会有什么
  • 为什么 textarea 不是 input[type="textarea"]?

    为什么有一个元素
  • jQuery 输入事件在 IE 中的占位符上触发

    我有一个输入字段input绑定到它的事件 通过 jQuery 每次输入值更改时都应触发此事件 我添加了一个占位符来告诉用户此输入字段的用途 如果用户单击此输入字段input不应触发事件 该值实际上不会改变 只是占位符消失 它在 Firefo
  • 如何在IOS中使用“*”字符进行呼叫(拨号)?

    我希望用 字符来调用 例如 gt 711313 目前 我正在使用这段代码 NSString str NSString stringWithFormat tel tmp UIApplication sharedApplication open
  • 工具提示弹出窗口内的 Bootstrap 输入字段已从输出 html 中删除

    您好 我正在使用 bootstrap 4 3 1 并包含 popper 1 14 7 通常我可以在弹出窗口 工具提示的内容中添加输入字段 我从什么时候开始就不知道了 但是当我将输入字段放入内容中时 只有文本可见 当我查看源代码 编译后的 h
  • 如何制作复选按钮? (带有标签的隐藏复选框作为按钮:仅限 CSS)

    Using 方法1 创建可点击标签 https stackoverflow com a 6293626 1326147 用 CSS 隐藏复选框 https stackoverflow com a 18078908 1326147 and 使
  • C中输出单个字符

    在 C 程序中打印单个字符时 必须在格式字符串中使用 1s 吗 我可以使用 c 之类的东西吗 yes c将打印单个字符 printf c h also putchar putc也会起作用 来自 man putchar include
  • 将一个文本框的值分配给另一个文本框

    看过类似问题的答案 但对于我的一生 我无法弄清楚我做错了什么 我有两个文本框和一个按钮 当文本添加到第一个文本框并按下按钮时 我想将第一个文本框的值 文本应用到第二个文本框
  • C - 直接从键盘缓冲区读取

    这是C语言中的一个问题 如何直接读取键盘缓冲区中的数据 我想直接访问数据并将其存储在变量中 变量应该是什么数据类型 我需要它用于我们研究所目前正在开发的操作系统 它被称为 ICS OS 我不太清楚具体细节 它在 x86 32 位机器上运行
  • 使用“表单控件”删除输入字段的轮廓

    我有一个输入字段 如下所示 在类名中我将其作为form control

随机推荐

  • AndroidUI绘制流程实例2(继承ViewGroup)

    案例仅供参考学习 MainActivity package com example test import android app Activity import android os Bundle import android view
  • python: GUI using tkinter

    StudentUI py 读文件类 date 2023 06 24 edit Geovin Du geovindu 涂聚文 ide PyCharm 2023 1 python 11 import datetime import sys im
  • 自定义view及优化

    参考链接 自定义View 有这一篇就够了 简书 1 2 自定义 View 菜鸟教程 自定义view 当Android系统内置的View无法实现我们的需求时 我们可以根据要求制订自己的View 自定义view大约需要这几步 继承View类 至
  • vue中视频插件vue-video-player使用

    视频插件 vue video player github地址 https github com surmon china vue video player 安装 npm install vue video player save 引入 全局
  • Application进行详解(unity)

    Application进行详解 unity中的 介绍 在Unity引擎中 Application类是一个非常重要的类 它可以提供一些有用的方法 用于管理Unity应用程序的运行时行为 通过使用Application类 您可以获取有关Unit
  • 剑指offer62. 圆圈中最后剩下的数字(Josephuse约瑟夫环问题) P300

    剑指offer62 圆圈中最后剩下的数字 Josephuse约瑟夫环问题 P300 题目 0 1 n 1这n个数字排成一个圆圈 从数字0开始每次从这个圆圈里删除第m个数字 求出这个圆圈里剩下的最后一个数字 方法1 循环链表 C 官网说lis
  • TextMeshProUGUI的基本使用方法(资源创建、材质、表情等)

    TextMeshPro 以下均简称为TMP 是使用在Unity中的一种强大的文本插件 恩 感觉跟PS差不多了 在unity5 6时代好像就说要用这个插件来代替unity中自带的Text和TextMesh组件 但现在都unity2017 3了
  • 【Kubernetes部署篇】Kubeadm方式搭建K8s集群 1.26.0版本

    文章目录 一 集群规划及架构 二 系统初始化准备 所有节点同步操作 三 安装并配置Containerd容器运行时 四 安装kubeadm 所有节点同步操作 五 初始化集群 六 Node节点添加到集群 七 安装网络组件Calico 八 测试C
  • 13. PyQt5实现多页面切换之QTabWidget

    PyQt5实现多页面切换之QTabWidget PyQt5实现多页面切换之QTabWidget 一 QTabWidget 类简介 二 QTabWidget 类的使用步骤 三 QTabWidget 类中的属性 四 QTabWidget 类中的
  • 抖音广告落地页怎么制作?四个原则为您详细介绍

    抖音广告落地页怎么制作 抖音作为著名的短视频社交平台 活跃用户数据庞大 消费市场广阔 已经成为了品牌商重要的产品网络推广平台 抖音信息流广告亦是成为各大品牌商的热门选择 那么一个引人入胜的抖音广告落地页该如何制作呢 1 辨识原则 利用品牌方
  • STM32H7实现8通道ADC采集(软件触发+DMA传输)

    使用CubeMX工具 对DMA进行配置 CubeMX工程下载 dma相关的配置比较简单 主要是adc配置相关的修改 数据要设置成DMA循环模式ADC CONVERSIONDATA DMA CIRCULAR 溢出操作要设置为覆盖ADC OVR
  • auto-1 - 自动化之windows powershell与python

    在powershell中实现功能 mkvenv指令在该目录下创建并进入虚拟环境 如果目录中有requirements txt自动安装 venv进入该目录下的虚拟环境 默认虚拟环境文件夹名称是venv pi
  • 解决:ModuleNotFoundError: No module named ‘gym‘

    从没安装过gym 出现 ModuleNotFoundError No module named gym 这种错误 可以使用命令如下进行安装 pip install i https pypi tuna tsinghua edu cn simp
  • 学习笔记(28):R语言入门基础-矩阵的编辑——合并矩阵

    立即学习 https edu csdn net course play 24913 285695 utm source blogtoedu 矩阵的合并 按行合并 rbind 按列合并 cbind
  • 旅游管理系统-JAVA【数据库设计、源码、开题报告】

    摘 要 21世纪是一个知识大爆炸的时代 互联网拉近了人们的距离 信息化革命席卷了各个行业 物质生活水平的提高使得人们的消费观念悄然发生改变 人们对户外旅行的要求越来越高 这对于传统旅游行业来说既是机遇也是挑战 提高旅游行业管理水平 推进旅游
  • 转载:开源mes系统_基于SpringBoot 开源框架,设计MES系统源码分享(代码标准规范)

    Hutool 是一个小而全的Java工具类库 通过静态方法封装 降低相关API的学习成本 提高工作效率 使Java拥有函数式语言般的优雅 让Java语言也可以 甜甜的 请求参数每张表的分页查询参数 严格按照一张表对应一个请求参数对象进行开发
  • NTSC、PAL、SECAM彩色电视制式

    NTSC PAL和SECAM是世界上最主要的三大电视制式 并且这三种制式间不能兼容 例如PAL的视频不能在NTSC制式的电视上播放 下图是三种制式在世界上的使用分布图 NTSC制式 NTSC制式 简称N制 是1952年12月由美国国家电视标
  • 老公老婆

    1 老公 你要努力挣钱 钱这个东西 不能少得来让我们整日为生计发愁 最好也不能多得来需要别的女人帮着花 2 请给我关爱 信任 尊重和自由 3 你要加强锻炼 强健身体 好在我们共同返家的夜晚 一口气抱我上到五楼的家门 我渴望每天都能做你的新娘
  • 21天Python进阶学习挑战赛

    21天Python进阶学习挑战赛活动详情 1 活动介绍 2 作者介绍 3 专栏介绍 4 学习计划 1 活动介绍 CSDN与每一位学习者同行 平台优质专栏作者带队精准学习 精选高质量专栏学习资料活动期内限时免费学习 此刻开启学习打卡之路 收获
  • LETTERS

    http poj org problem id 1154 Description A single player game is played on a rectangular board divided in R rows and C c