【秋招笔试题】消除区间DP

题目描述:

小明有一个长度为n,由前k个小写英文字母组成的字符串(保证n为偶数)。

小明花费1个硬币可以将他相邻的这两个字母构成的字符消除。小明每次可以选择该串中的两个相邻的字符相同,删除后将硬币丢掉,并花费小明一段一定数量的零钱。

若某一对删除的相邻两个字符分别是a和b,则将花掉小明cost(a, b)块钱。小明希望他花掉的零花钱尽可能少,帮帮小明。

输入描述:

第一行有两个整数n, k(1<=n<=500,1<=k<=26),分别代表小明的字符串长度与字符中的字符种类数(保证n为偶数且串的内容仅由前k个小写英文字母组成)。

接下来k行给出了一个k*k的整数构成的矩阵。矩阵中第i行第j列的元素代表删除相邻的第i个字母和第j个字母所能花掉的块数。

最后一行有一个长度为n的字符串,代表小明的字符串。

输出描述:

输出一个值,代表小明最少能花掉多少零花钱。

package com.sky;

import java.util.Scanner;

public class Test1 {

    static long[][] f = new long[27][27];
    static long[][] dp = new long[510][510];

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int k = sc.nextInt();

        for (int i = 0; i < k; i++) {
            for (int j = 0; j < k; j++) {
                f[i][j] = sc.nextLong();
            }
        }

        String s = sc.next();
        s = " " + s;

        for (int len = 2; len <= n; len++) {
            for (int l = 1; l + len - 1 <= n; l++) {
                int r = l + len - 1;

                dp[l][r] = dp[l + 1][r - 1] + f[s.charAt(l) - 'a'][s.charAt(r) - 'a'];
                dp[l][r] = Math.max(dp[l][r], dp[l][r - 2] + f[s.charAt(r - 1) - 'a'][s.charAt(r) - 'a']);
                dp[l][r] = Math.max(dp[l][r], dp[l + 2][r] + f[s.charAt(l) - 'a'][s.charAt(l + 1) - 'a']);

                for (int j = l + 1; j + 1 <= r; j += 2) {
                    dp[l][r] = Math.max(dp[l][j] + dp[j + 1][r], dp[l][r]);
                }
            }
        }

        System.out.println(dp[1][n]);

        sc.close();
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我无法提供南方电网秋招笔试真题的具体内容,因为我无法获取或提供特定公司的招聘信息。但是,我可以给你一些关于南方电网秋招笔试的一般性建议和常见题型。 南方电网秋招笔试通常包括以下几个方面的内容: 1. 专业知识测试:涉及电力工程、电气工程、能源与动力工程等相关专业知识,包括电力系统、电力设备、电力工程管理等方面的知识。 2. 数学与逻辑推理:包括数学运算、概率统计、逻辑推理等方面的题目。 3. 英语能力测试:主要考察英语阅读理解、词汇量和语法等方面的能力。 4. 综合素质测试:主要考察应聘者的综合素质,包括综合分析能力、创新思维、团队合作等方面。 在备考南方电网秋招笔试时,建议你注意以下几点: 1. 熟悉岗位要求:了解南方电网对应聘者的要求,明确自己所应聘的岗位所需的专业知识和技能。 2. 多做模拟题:通过做一些模拟题来熟悉题型和考试时间,提高解题速度和准确性。 3. 复习重点知识:重点复习与岗位相关的专业知识,包括电力系统、电力设备、电力工程管理等方面的知识。 4. 提高英语能力:加强英语阅读理解和词汇量的积累,可以通过阅读英文文章、做题和听力练习等方式提高英语能力。 5. 注重综合素质:在备考过程中,注重培养自己的综合素质,包括综合分析能力、创新思维和团队合作等方面的能力。 希望以上建议对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值