gpt4 book ai didi

java - 动态规划(Codility Q : NumberSolitaire)

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:42:21 25 4
gpt4 key购买 nike

这是问题:codility.com/programmers/task/number_solitaire

下面的链接是我的结果(50% 来自 Codility): https://codility.com/demo/results/training8AMJZH-RTA/

我的代码(起初,我尝试使用 Kadane 的算法解决这个问题):

class Solution {
public int solution(int[] A) {
int temp_max = Integer.MIN_VALUE;
int max = 0;
int k = 1;

if(A.length == 2) return A[0] + A[A.length-1];

for(int i = 1; i < A.length-1; i++) {
if(temp_max < A[i]) temp_max = A[i];

if(A[i] > 0) {
max += A[i];
temp_max = Integer.MIN_VALUE;
k = 0;

} else if(k % 6 == 0) {
max += temp_max;
temp_max = Integer.MIN_VALUE;
k = 0;
}
k++;
}
return A[0] + max + A[A.length-1];
}

下面是我从网上找到的解决方案(100% 来自 Codility 结果):

class Solution {
public int solution(int[] A) {
int[] store = new int[A.length];
store[0] = A[0];
for (int i = 1; i < A.length; i++) {
store[i] = store[i-1];
for (int minus = 2; minus <= 6; minus++) {
if (i >= minus) {
store[i] = Math.max(store[i], store[i - minus]);
} else {
break;
}
}
store[i] += A[i];
}
return store[A.length - 1];
}
}

我不知道我的代码有什么问题:(

我尝试了几个测试用例,但解决方案和我的代码没有什么不同

但是,codility 测试结果显示我的并不完全正确。( https://codility.com/demo/results/training8AMJZH-RTA/ )

请任何人解释我的代码问题~~

最佳答案

试试这个测试用例[-1, -2, -3, -4, -3, -8, -5, -2, -3, -4, -5, -6, -1]。你的解返回 -4 (A[0],A[1],A[length-1],这是错误的),但正确答案是 -6 (A[0],A[6],A[length -1]).

这是我的解决方案,易于理解:

public int solution(int[] A) {
int lens = A.length;
int dp[] = new int[6];
for (int i = 0; i < 6; i++) {
dp[i] = A[0];
}
for (int i = 1; i < lens; i++) {
dp[i%6] = getMax6(dp) + A[i];
}
return dp[(lens-1)%6];
}

private int getMax6(int dp[]){
int max = dp[0];
for (int i = 1; i < dp.length; i++) {
max = Math.max(max, dp[i]);
}
return max;
}

关于java - 动态规划(Codility Q : NumberSolitaire),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34100363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com