啊啊啊啊啊!好久没A了,这次又是这一题有点问题!气死我了

急死了,我为什么不相信自己呢?

又去看其他思路了,应该用自己的方法。

这题如果过了那就是四题了

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=Integer.parseInt(in.nextLine());
        int[] nums=new int[n];
        String[] words=in.nextLine().split(" ");
        for(int i=0;i<n;i++){
            nums[i]=Integer.parseInt(words[i]);
        }
        char[] boo=in.nextLine().toCharArray();
        System.out.println(getans(nums,boo));
    }

    public static long getans(int[] nums,char[] boo){
        boolean[] used=new boolean[nums.length];
        ans=new ArrayList<>();
        tDFS(nums,boo,used,0,0);
        long t=Long.MIN_VALUE;
        for(int n:ans){
            t=Math.max(n,t);
        }
        return t;
    }

    public static List<Integer> ans;
    public static void tDFS(int[] nums,char[] boo,boolean[] used,int sum,int start){
        boolean flag=false;
        for(int i=start;i<nums.length-1;i++){
            if(used[i]||used[i+1]){
                continue;
            }
            if(boo[i]==boo[i+1]){
                continue;
            }
            flag=true;
            sum+=nums[i];
            sum+=nums[i+1];
            used[i]=true;
            used[i+1]=true;
            tDFS(nums,boo,used,sum,i+1);
            sum-=nums[i];
            sum-=nums[i+1];
            used[i]=false;
            used[i+1]=false;
        }
        if(flag==false){
            ans.add(sum);
            return;
        }
    }
}

全部评论
所以这是你事后诸葛亮想出来的答案吗
1 回复 分享
发布于 2023-03-13 16:10 河北
数据量多少啊 会不会爆
点赞 回复 分享
发布于 2023-04-03 08:35 广东
蹲个答案
点赞 回复 分享
发布于 2023-03-12 00:49 广东

相关推荐

面向对象的火龙果很爱...:去吃一顿炸鸡就走
点赞 评论 收藏
分享
不要停下啊:大二打开牛客,你有机会开卷了,卷起来,去找课程学习,在牛客上看看大家面试笔试都需要会什么,岗位有什么需求就去学什么,努力的人就一定会有收获,这句话从来都经得起考验,像我现在大三了啥也不会,被迫强行考研,炼狱难度开局,啥也不会,找工作没希望了,考研有丝丝机会
点赞 评论 收藏
分享
07-09 18:28
门头沟学院 Java
写着提前批,结果还要实习4个月以上???
程序员牛肉:这种不用看,直接投了,面试的时候问对应的HR就行。有可能他们是直接复制的暑期实习的模板。
点赞 评论 收藏
分享
评论
2
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务