3.21 贝壳服务端笔试

A了2 3 第一题没看出来是动态规划 结束后做出来了
第一题 对于dp[j] 意为0~j这一段字串最大的得分,通过最大的dp[i]+score(i+1,j)获得,其中i=0~j-1,score(i+1,j)为i+1~j这段字串的得分
import java.util.ArrayList;
import java.util.Scanner;

public class Beike_01 {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        in.nextLine();
        String s=in.nextLine();
        System.out.println(maxScore(s));
    }
    public static int maxScore(String s){
        int[] dp=new int[s.length()];
        dp[0]=-1;
        for(int i=1;i<s.length();i++){
            dp[i]=score(s.substring(0,i+1));
            for(int j=0;j<i;j++){
                dp[i]=Math.max(dp[i],dp[j]+score(s.substring(j+1,i+1)));
            }
        }
        return dp[s.length()-1];
    }
    public static int score(String s){
        int[] cnt=new int[26];
        for(int i=0;i<s.length();i++){
            int index=s.charAt(i)-'a';
            cnt[index]++;
        }
        int score=0;
        for(int i=0;i<26;i++){
            if(cnt[i]==0) continue;
            if(cnt[i]%2==0) score++;
            else score--;
        }
        return score;
    }
}
第二题 我用暴力会超时 所以维护了一个动态数组来记录各位和 注意输入是有界的 所以多写几个判断就好了
import java.util.Scanner;

public class Beike_02 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int t = in.nextInt();
        for (int i = 0; i < t; i++) {
            int l = in.nextInt();
            int r = in.nextInt();
            System.out.println(numOfModNum(l, r));
        }
    }

    public static int numOfModNum(int l, int r) {
        int[] bitI = new int[6];
        int j = 0;
        int tmp = l;
        l--;
        while (l > 0) {
            for (int i = 0; i <= j; i++) bitI[i] += l % 10;
            l /= 10;
            j++;
        }
        l = tmp;
        int ret = 0;
        for (int i = l; i <= r; i++) {
            if (i == 1000000) continue;
            if (i % 100000 == 0) {
                bitI[5]++;
                for (int k = 0; k < 5; k++) bitI[k] = bitI[5];
            } else if (i % 10000 == 0) {
                bitI[4]++;
                for (int k = 0; k < 4; k++) bitI[k] = bitI[4];
            } else if (i % 1000 == 0) {
                bitI[3]++;
                for (int k = 0; k < 3; k++) bitI[k] = bitI[3];
            } else if (i % 100 == 0) {
                bitI[2]++;
                for (int k = 0; k < 2; k++) bitI[k] = bitI[2];
            } else if (i % 10 == 0) {
                bitI[1]++;
                for (int k = 0; k < 1; k++) bitI[k] = bitI[1];
            } else bitI[0]++;
            if (i % bitI[0] == 1) ret++;


        }
        return ret;

    }

}
第三题 BFS 和普通的BFS的区别在于只有两个方向而且需要区别以下,但是不用标记是否访问过了
import java.util.Arrays;
import java.util.Scanner;

public class Beike_03 {
    static int stringSum = 0;

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        in.nextLine();
        String s = in.nextLine();
        String[] ans = new String[n];
        for (int i = 0; i < n; i++) ans[i] = in.nextLine();
        char[][] board = new char[n][n];
        for (int i = 0; i < n; i++) {
            board[i] = ans[i].toCharArray();
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                dfs(n, i, j, 0, s, board, true);
                dfs(n, i, j, 0, s, board, false);
            }
        }
        System.out.println(stringSum);
    }

    public static void dfs(int n, int i, int j, int index, String s, char[][] board, boolean direct) {
        if (index == s.length()) {
            stringSum++;
            return;
        }
        if (i < 0 || i >= n || j < 0 || j >= n) return;
        char c = s.charAt(index);
        if (board[i][j] != c) return;
        if (direct) dfs(n, i, j + 1, index + 1, s, board, direct);
        else dfs(n, i + 1, j, index + 1, s, board, direct);
    }

}


#贝壳找房实习生招聘##贝壳找房##笔经#
全部评论
楼主 现在收到了嘛
点赞 回复 分享
发布于 2022-03-25 00:48
楼主收到面试通知了吗求问
点赞 回复 分享
发布于 2022-03-22 19:39

相关推荐

03-27 16:40
已编辑
门头沟学院 C++
26学院本太难了,很多公司机筛就给我刷了。机会都难拿到如果是简历存在问题也欢迎拷打————————————————————分割线——————————————————————2026.3.4更新:发完贴之后,时不时投递又收到了不少的笔试/面试邀请。主要是之前投递简历出去之后基本上都是沉默状态,年后好转了不少timeline:2026.01.21&nbsp;文远知行笔试,半年多没刷算法题&nbsp;-&gt;挂&nbsp;(后续HR说春招可以重新安排笔试)2026.2.4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;小鹏汇天&nbsp;技术一面,第二周收到结果&nbsp;-&gt;挂2026.2.12&nbsp;&nbsp;&nbsp;大众Cariad代招&nbsp;技术二面&nbsp;-&gt;Offer2026.2.28&nbsp;&nbsp;&nbsp;多益网络技术面试,由于风评太差,一直在犹豫要不要接面试&nbsp;-&gt;推迟-----------分割线-----------2026.3&nbsp;月前的某一天,临时去电网报名了二批计算机岗位的笔试2026.3.6&nbsp;从上家公司实习离职,氛围最好的一家公司,leader&nbsp;说可以帮忙转正,但是流程太长,而且我们部门据说只有一个&nbsp;hc,更想要研究生,我很有可能是会被签外包公司在这里干活,就离职了。2026.3.9&nbsp;入职新公司,大众Cariad&nbsp;以外部公司的身份进组,项目组签了三年,后续三年应该都可以在这里呆,不知道有没有希望原地跳槽。2026.3.10&nbsp;电网考试居然说我通过资格审查了,短信约我去参加资格审查,请假一天,买了&nbsp;12&nbsp;号晚上的机票回成都2026.3.15&nbsp;参加国家电网计算机类笔试2026.3.17&nbsp;电网出成绩了,感觉很低。觉得已经🈚️了2026.3.18&nbsp;收到电网面试通知,通知&nbsp;3.22-3.25&nbsp;这个时间去面试,我的岗位只招&nbsp;1&nbsp;个人。据说面试只有&nbsp;2-3&nbsp;人,不知道能不能成功----------分割线-----------2026.3.21&nbsp;电网面试结束,感觉回答的还勉勉强强,大概是2个岗位分别招1个人,一共11人面试,实际来了9人2026.3.27&nbsp;出面试成绩,满分100分,早上10:20左右发现面试成绩46,我震惊了,没截图,后面过了十分钟重新看发现面试成绩给我改成58了。但同样震惊。朋友问我是不是把面试官打了,哈哈
点赞 评论 收藏
分享
评论
2
3
分享

创作者周榜

更多
正在热议
更多
# 一张图晒出你司的标语 #
4274次浏览 75人参与
# AI面会问哪些问题? #
27625次浏览 552人参与
# 米连集团26产品管培生项目 #
13327次浏览 285人参与
# 你的实习产出是真实的还是包装的? #
20103次浏览 342人参与
# 找AI工作可以去哪些公司? #
9011次浏览 233人参与
# 春招至今,你的战绩如何? #
64714次浏览 578人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
15162次浏览 221人参与
# 从事AI岗需要掌握哪些技术栈? #
8860次浏览 302人参与
# 你做过最难的笔试是哪家公司 #
33267次浏览 231人参与
# 中国电信笔试 #
31977次浏览 292人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
340747次浏览 2174人参与
# 哪些公司真双非友好? #
69570次浏览 289人参与
# 阿里笔试 #
178475次浏览 1315人参与
# 机械人避雷的岗位/公司 #
62698次浏览 393人参与
# 第一份工作一定要去大厂吗 #
14491次浏览 122人参与
# 金三银四,你的春招进行到哪个阶段了? #
22065次浏览 280人参与
# 为了减少AI幻觉,你注入过哪些设定? #
26245次浏览 310人参与
# 沪漂/北漂你觉得哪个更苦? #
9797次浏览 193人参与
# HR最不可信的一句话是__ #
6195次浏览 113人参与
# 应届生第一份工资要多少合适 #
20674次浏览 86人参与
# AI时代,哪个岗位还有“活路” #
11470次浏览 341人参与
# 春招你拿到offer了吗 #
831151次浏览 9986人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务