啊啊啊啊啊!好久没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;
}
}
}
查看17道真题和解析

vivo公司福利 368人发布