搜索练习题LETTERS
题目链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1212 或者http://poj.org/problem?id=1154
题目描述:
给出一个roe×colroe×col的大写字母矩阵,一开始的位置为左上角,你可以向上下左右四个方向移动,并且不能移向曾经经过的字母。问最多可以经过几个字母。
【输入】
第一行,输入字母矩阵行数RR和列数SS,1≤R,S≤201≤R,S≤20。
接着输出RR行SS列字母矩阵。
【输出】
最多能走过的不同字母的个数。
【输入样例】
3 6
HFDFFB
AJHGDH
DGAGEH
【输出样例】
6
#include <bits/stdc++.h>
using namespace std;
const int MAXN=;
int r,s,ans; // R,S分别表示行数和列数,ans表示最多经过字母数
char a[MAXN][MAXN];
int dir[][] = { -, , , , , -, , }; // dir数组用于表示上下左右4个方向
bool vis[]; // vis数组用于记录26个字母是否有走过,其中'A'对应vis[0],'B'对应vis[1],…
//用于判断第x行第y列的元素是否超过地图边界
bool isp(int x,int y){
return x>=&&x<r&&y>=&&y<s; //一开始写了x<=r&&y<=s不对 ,后来发现数组越界了
}
void dfs(int x,int y,int sum){ // dfs函数用于搜索,它表示当前在第x行第y列,已经走了sum步
vis[a[x][y]-'A']=true; // 首先将当且(x,y)这个点对应的字母的vis值标记为true
if(sum>ans) ans=sum;
for(int i=;i<;i++){
int nx=x+dir[i][];
int ny=y+dir[i][];
if(isp(nx,ny) && !vis[a[nx][ny]-'A'])
dfs(nx,ny,sum+);
}
vis[a[x][y] - 'A' ] = false; // 因为搜索是尝试放,所以推出本次搜索记得将vis值标记回false
}
int main(){
cin>>r>>s;
for(int i=;i<r;i++)
for(int j=;j<s;j++)
cin>>a[i][j];
dfs(,,);
cout<<ans<<endl;
return ;
}
搜索练习题LETTERS的更多相关文章
- 搜索练习题——FBI树
目录: ·题目描述 ·知识拓展 ·题目分析 ·思路分析 ·代码实现 ·总结 ·题目描述: (洛谷P1087 FBI树) 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称 ...
- 【BZOJ1501】【NOI2005】智慧珠游戏(搜索)
[BZOJ1501][NOI2005]智慧珠游戏(搜索) 题面 我要一改我懒惰的作风 这道题目必须放题面 Description Input 文件中包含初始的盘件描述,一共有10行,第i行有i个字符. ...
- COJN 0487 800301红与黑
800301红与黑 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖. ...
- 零基础学python之构建web应用(入门级)
构建一个web应用 前面的学习回顾: IDLE是Python内置的IDE,用来试验和执行Python代码,可以是单语句代码段,也可以是文本编辑器中的多语句程序. 四个内置数据结构:列表.字典.集合和元 ...
- 【Codevs3567】宫廷守卫
Position: http://codevs.cn/problem/3567/ Description 从前有一个王国,这个王国的城堡是一个矩形,被分为M×N个方格.一些方格是墙,而另一些是空地.这 ...
- 搜索入门练习题9 LETTERS 题解
题目出处:<信息学奥赛一本通>第五章上机练习1 或者 POJ1154 题目描述 给出一个 \(R\times S\) 的大写字母矩阵,一开始你所处的位置在左上角,你可以向上下左右四个方向移 ...
- 小甲鱼第51讲:《__name__="__main__"、搜索路径和包》课后练习题
测试题: 0. __name__属性指的是在调用该模块的时候调用的函数名称,方便在模块的被调用的时候,模块内部被调用的函数不会被运行. 1. 当模块作为主程序运行的时候,__name__属性的值是“_ ...
- 第六章第二十题(计算一个字符串中字母的个数)(Count the letters in a string) - 编程练习题答案
*6.20(计算一个字符串中字母的个数)编写一个方法,使用下面的方法头计算字符串中的字母个数: public static int countLetters(String s) 编写一个测试程序,提示 ...
- 网上搜索到的 比较好的mysql查询语句练习题
Sutdent表的定义 字段名 字段描述 数据类型 主键 外键 非空 唯一 自增 Id 学号 INT(10) 是 否 是 是 是 Name 姓名 VARCHAR(20) 否 否 是 否 否 Sex 性 ...
随机推荐
- Nginx code 状态码说明
最近了解下Nginx的Code状态码,在此简单总结下. 先来再回顾一下一个http请求处理流程: 一个普通的http请求处理流程,如上图所示: A -> client端发起请求给nginx B ...
- Spring注解开发系列VII --- Servlet3.0
Servlet3.0简介 Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布.该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用 ...
- laravel 服务容器的由来 代码展示
<?php /** * 目的:代码的完善来说明从 基础类的调用到 工厂类的使用 再到容器的出现的原因 * (首先要明白工厂类和容器的关系 可以理解:容器就是工厂类的升级版(为了解决类的依赖)) ...
- Leetcode 题目整理-6 Swap Nodes in Pairs & Remove Duplicates from Sorted Array
24. Swap Nodes in Pairs Given a linked list, swap every two adjacent nodes and return its head. For ...
- hive安装启动错误总结
错误一: Exception in thread "main" java.lang.NoClassDefFoundError: jline/console/completer/Ar ...
- 深入JVM内存区域管理,值得你收藏
JDK和JRE和JVM的关系 JDK(Java Development Kit)是程序开发者用来来编译.调试java程序用的开发工具包 JRE(JavaRuntimeEnvironment,Java运 ...
- Codeforces_732_D
http://codeforces.com/problemset/problem/732/D 二分查找. #include<iostream> #include<cstring> ...
- 通过Python包来剪枝、蒸馏DNN
用 Distiller 压缩 PyTorch 模型 作者: PyTorch 中文网发布: 2018年7月15日 5,101阅读 0评论 近日,Intel 开源了一个用于神经网络压缩的开源 Python ...
- CNN卷积神经网络入门整合(科普向)
这是一篇关于CNN入门知识的博客,基本手法是抄.删.改.查,就算是自己的一个笔记吧,以后忘了多看看. 1.边界检测示例假如你有一张如下的图像,你想让计算机搞清楚图像上有什么物体,你可以做的事情是检 ...
- 《自拍教程6》打开Windows文件后缀
如果你用的是Windows操作系统, 请把文件后缀名打开,千万别隐藏后缀名, 后续有各类 .py, .sh, .bat, .exe等不同文件, 需要你时刻关注文件后缀名. 如果是我看到我手下的测试人员 ...