一本通 1212:LETTERS
一本通 1212:LETTERS
题目描述
给出一个roe×col的大写字母矩阵,一开始的位置为左上角,你可以向上下左右四个方向移动,并且不能移向曾经经过的字母。问最多可以经过几个字母。
输入
第一行,输入字母矩阵行数R和列数S,1≤R,S≤20。
接着输出R行S列字母矩阵。
输出
最多能走过的不同字母的个数。
输入样例
3 6
HFDFFB
AJHGDH
DGAGEH
输出样例
6
思路
一道简单的搜索回溯题目
我们可以定义几个数组,和最大值maxn,输入之后进行搜索,一次一次搜,如果当前进行的步骤比maxn大,就把step(当前步骤)的值赋给maxn,最后输出maxn即可
代码
#include<bits/stdc++.h>
using namespace std;
char a[28][28];
int vis[28][28];
int num[27];
bool b[27];
int f[5][3]= {{0,0,0},{0,0,1},{0,0,-1},{0,1,0},{0,-1,0}};
int r,s;
int maxn=0;
void dfs(int x,int y,int st){
if(maxn<st){
maxn=st;
}
for(int i=1;i<=4;i++){
int nx=x+f[i][1];
int ny=y+f[i][2];
if(nx>0&&nx<=r&&ny>0&&ny<=s&&vis[nx][ny]==0&&num[a[nx][ny]-64]==0){
vis[nx][ny]=1;
num[a[nx][ny]-64]=1;
dfs(nx,ny,st+1);
vis[nx][ny]=0;
num[a[nx][ny]-64]=0;
}
}
}
int main() {
scanf("%d%d",&r,&s);
for(int i=1; i<=r; i++) {
for(int j=1; j<=s; j++) {
cin>>a[i][j];
}
}
num[a[1][1]-64]=1;
vis[1][1]=1;
dfs(1,1,1);
cout<<maxn<<'\n';
return 0;
}
一本通 1212:LETTERS的更多相关文章
- 【dfs】LETTERS
1212:LETTERS [题目描述] 给出一个roe×colroe×col的大写字母矩阵,一开始的位置为左上角,你可以向上下左右四个方向移动,并且不能移向曾经经过的字母.问最多可以经过几个字母. [ ...
- BZOJ 1212: [HNOI2004]L语言 [AC自动机 DP]
1212: [HNOI2004]L语言 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1367 Solved: 598[Submit][Status ...
- [LeetCode] Remove Duplicate Letters 移除重复字母
Given a string which contains only lowercase letters, remove duplicate letters so that every letter ...
- 316. Remove Duplicate Letters
Given a string which contains only lowercase letters, remove duplicate letters so that every letter ...
- Remove Duplicate Letters I & II
Remove Duplicate Letters I Given a string which contains only lowercase letters, remove duplicate le ...
- [CareerCup] 18.13 Largest Rectangle of Letters
18.13 Given a list of millions of words, design an algorithm to create the largest possible rectangl ...
- LeetCode Remove Duplicate Letters
原题链接在这里:https://leetcode.com/problems/remove-duplicate-letters/ 题目: Given a string which contains on ...
- codeforces 709C C. Letters Cyclic Shift(贪心)
题目链接: C. Letters Cyclic Shift 题意: 现在一串小写的英文字符,每个字符可以变成它前边的字符即b-a,c-a,a-z这样,选一个字串变换,使得得到的字符串字典序最小; 思路 ...
- Lintcode: Sort Letters by Case
Given a string which contains only letters. Sort it by lower case first and upper case second. Note ...
随机推荐
- T研究:国内云BPM市场规模尚小,预计2018年仅为3.29亿元
文章摘要:T研究发现,目前国内云BPM市场规模不高,预计今年为3.29亿元,不过其增速稳定,未来发展仍可期. BPM?什么鬼?反正作为“菊外人”的小编是第一次听说. 其实,对于这个词,不光是小编,国内 ...
- WordCount作业修改
WordCount作业修改 github地址 需求说明 基本需求 功能说明 PSP 代码实现 字符总数查询 单词数查询 行数查询 总结 一.需求说明 1.基本需求 WordCount的需求可以概括为: ...
- ASP.NET Core 入门教程 1、使用ASP.NET Core 构建第一个Web应用
一.前言 1.本文主要内容 Visual Studio Code 开发环境配置 使用 ASP.NET Core 构建Web应用 ASP.NET Core Web 应用启动类说明 ASP.NET Cor ...
- odoo11 model+Recordset 基础未完待续
Model 一个模型代表了一个业务对象 本质上是一个类,包含了同django flask一样的数据字段 所有定义在模型中的方法都可以被模型本身的直接调用 现在编程范式有所改变,不应该直接访问模型,而是 ...
- Apache httpd.conf配置文件主要内容解释
1 ServerRoot 配置 ["ServerRoot" 主要用于指定Apache的安装路径,此选项参数值在安装Apache时系统会自动把Apache的路径写入.Windows安 ...
- java反射笔记
反射(reflect) 1. Class对象 1.1 什么是Class对象 当JVM加载某个class文件的时候,会自动创建一个唯一的Class对象(注意:由同一个类加载器加载的class文件),这个 ...
- 通过Socket让远程电脑执行脚本
实现功能: 客户端发送命令,服务器接收命令并执行 服务端: import socketserver, os class MyTCPHandler(socketserver.BaseRequestHan ...
- c#qq发邮件
// SMTP(Simple Mail Transport Protocol)简单邮件传输协议.在.NET Frameword类库中提供SmtpClient类(System.Net.Mail),她提供 ...
- VMware 15 pro虚拟机
VMware虚拟机都到VMware Workstation 15 Pro,真快,VMware 14还没用好
- 如何用Jupyter notebook打开本地数据集
首先打开本地Jupyter notebook,出现类似页面并进入网页端Home. 网页端界面类似如下: 需要注意的是,Jupyter notebook只能打开当前目录下的数据集,如csv,所以需要使用 ...