携程笔试 求助求助
我觉得携程的好难
第二题 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));
}
} 