携程笔试 求助求助
我觉得携程的好难
第二题 y,o,u三种字符,拼成字符串;字符串存在you 加 2分 存在oo加一分 求一组字符能得到的最大的分
输入:第一行是字符组的个数n,后n-1行数字符租里 y,o,u分别的个数;
动态规划还不太会用 我直接暴力用的递归 但是base case设的不对 有大佬帮我看一下吗?
dp函数里的i是一个标识为,避免在第一次的时候进行判断;
但是跑不通base case有问题;
public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int[][] nums = new int[n][3]; for (int i = 0; i < n; i++) { for (int j = 0; j < 3; j++) { nums[i][j] = scanner.nextInt(); } } for(int[] tmp : nums){ System.out.println(dp(tmp, 0,0,0,0)); } } static int dp(int[] num,int x,int y,int u,int i){ if(i != 0){ if(x == 1){ if(!(num[0] > 0 && num[1] > 0 && num[2] >0)){ return -2; } } if(x == 0){ if(num[1] < 2){ return -1; } } } num[0] -= x; num[1] -= y; num[2] -= u; return Math.max(dp(num,1,1,1,1) + 2,dp(num,0,2,0,1)); } }