LETTERS(dfs)

部署运行你感兴趣的模型镜像

题目描述

给出一个roe×col的大写字母矩阵,一开始的位置为左上角,你可以向上下左右四个方向移动,并且不能移向曾经经过的字母。问最多可以经过几个字母。

输入格式

第一行,输入字母矩阵行数R和列数S,1≤R,S≤20。
接着输出RR行SS列字母矩阵。

输出格式

最多能走过的不同字母的个数。

样例输入

复制

3 6
HFDFFB
AJHGDH
DGAGEH

样例输出

复制

6

提示

零基础同学可以先学习视频课程,包含C/C++、Python、百练、蓝桥杯辅导、算法数据结构等课程,提供视频讲解以及配套习题,还有老师答疑,点击这里了解课程详情

#include<bits/stdc++.h>
using namespace std;
int n,m;
const int N=21;
char a[N][N];
bool visited[N][N];
int count1=0;
int maxn=INT_MIN;
int next1[4][2]={{-1,0},{1,0},{0,1},{0,-1}};
set<char>used;
void dfs(int x,int y,int count1)
{
    maxn=max(count1,maxn);
    for(int i=0;i<4;i++)
    {
        int tx=x+next1[i][0];
        int ty=y+next1[i][1];
        if(tx>=0&&ty>=0&&tx<=n-1&&ty<=m-1&&used.find(a[tx][ty]) == used.end())
        {
            if(visited[tx][ty]==false)
            {
                used.insert(a[tx][ty]);
                dfs(tx,ty,count1+1);
                used.erase(a[tx][ty]);
            
            }
        }
    }
}
int main ()
{
    cin>>n>>m;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            cin>>a[i][j];
        }
    }
    used.insert(a[0][0]);
    dfs(0,0,1);
    cout<<maxn<<endl;
    return 0;
}

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值