啊啊啊啊啊!好久没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; } } }