【备战秋招】每日一题:2023.04.22-技术研发春招-民生科技机试(第二题)-收集大写字母

为了更好的阅读体检,可以查看我的算法学习网
本题在线评测链接:P1215

题目内容

塔子哥是一个喜欢拼图的小男孩,有一天,他收到了一份神秘的礼物。打开后,他发现里面是一个由英文字母组成的二维矩阵,每个字母都是一块拼图。

塔子哥觉得很好奇,就开始拼接这个矩阵。他发现,这个矩阵有一个特殊的规则,就是他只能从左上角开始,每次向右或向下移动一步,然后收集拼图上的英文字母。而且,每个字母都有一个分数,大写字母的分数比小写字母的分数高,所以塔子哥很想收集大写字母。

塔子哥想知道,他最多可以收集多少个大写字母。你能帮帮他吗?

输入描述

第一行输入两个正整数 n n n m m m ,代表矩阵的行数和列数。

接下来的 n n n 行,每行输入一个长度为 m m m 的、仅包含大写和小写字母的字符串。

1 ≤ n , m ≤ 1000 1 \le n, m \le 1000 1n,m1000

输出描述

一个整数,代表塔子哥最多可以收集到的大写字母。

样例

输入

5 5
AaBbb
bAaBa
CacAc
AbcBC
cbAbA

输出

7

思路:简单动态规划

原题:https://leetcode.cn/problems/unique-paths/

这里我们改一下转移即可; d p [ i ] [ j ] = m a x ( d p [ i − 1 ] [ j ] , d p [ i ] [ j − 1 ] ) + ( a [ i ] [ j ] 是大写字母 ) dp[i][j] = max(dp[i - 1][j] , dp[i][j - 1]) + (a[i][j]是大写字母) dp[i][j]=max(dp[i1][j],dp[i][j1])+(a[i][j]是大写字母)

代码

java代码

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
class Main {
    static int res = 0;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int [][] dp = new int[n + 1][m + 1];
        for (int i = 1 ; i <= n ; i++){
        	String a = sc.next();
        	for (int j = 1 ; j <= m ; j++){
        		int d = 0;
        		if ('A' <= a.charAt(j - 1) && a.charAt(j - 1) <= 'Z') d = 1;
        		dp[i][j] = Math.max(dp[i - 1][j] , dp[i][j - 1]) + d;
        	}
        }
        System.out.println(dp[n][m]);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
2023年3月11日,美团春季招聘笔试中共包含五道编程题目。以下是对每道目的简要说明: 1. 目一:这道目要求解决一个数字统计的问。可能涉及到的知识点包括数据结构、循环和条件判断等。解决问的思路可能是使用字典等数据结构来保存统计结果,并使用循环逐个读取输入数据并进行统计。 2. 目二:这道目可能是一个字符串处理的问。需要使用字符串的方法进行操作,如提取、拼接、查找和替换等。可能的解决思路包括使用正则表达式、切片和遍历等。 3. 目三:这道目可能涉及到算法和数据结构的知识。可能是一道涉及到数组、链表、树等数据结构的问。解决思路可能包括遍历、递归、搜索和排序等。 4. 目四:这道目可能是一个动态规划的问。需要根据给定的条件和规则,通过动态规划的方式求解问。解决思路包括定义状态和转移方程,使用递推或记忆化搜索进行求解。 5. 目五:这道目可能是一个图论或网络问。需要根据给定的图或网络结构,解决一个相关的问。可能涉及到广度优先搜索、深度优先搜索、最短路径等知识。解决思路可能包括使用图或网络的相关算法进行求解。 以上只是对这五道编程题目的一些可能情况进行的简要描述,具体的目内容可能会有所不同。希望这些信息能对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

塔子哥学算法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值