gpt4 book ai didi

java - 任务错误答案 - 算法错误

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

我正在做作业(首先抱歉英语)。

考虑 N 个硬币排成一行。每枚硬币都显示正面或反面。这些硬币的邻接度是相邻硬币显示相同面的对数。返回通过反转一枚硬币可以获得的最大可能邻接度,其中一枚硬币必须反转

比如我有

1 1 0 1 0 0 

在改变 third 之后我们得到 1 1 1 1 0 0 所以我们有 4 对。

但是例如我的代码不起作用

1 1 

我应该得到 0 但得到 1

  public static void main(String[] args) {
int[] A = {1, 1};

int n = A.length;
int result = 0;
for (int i = 0; i < n - 1; i++) {
if (A[i] == A[i + 1])
result = result + 1;
}
int r = 0;
for (int i = 0; i < n; i++) {
int count = 0;
if (i > 0) {
if (A[i - 1] != A[i])
count = count + 1;
else
count = count - 1;
}
if (i < n - 1) {
if (A[i + 1] != A[i])
count = count + 1;
else
count = count - 1;
}
r = Math.max(r, count);
}
System.out.println(result + r);
}

我哪里弄错了?

最佳答案

请注意“其中一枚硬币必须反转”

这意味着您必须掷一枚硬币!!!

让我们分析一下:

  1. 测试用例 A = {1,1} 或 A ={0,0},
    那么结果=1,所以“反转一枚硬币”后,结果应该变为0。

  2. 测试用例 A = {1,1,1} 或 A ={0,0,0}(所有硬币面朝上或朝下),
    则结果为 2,因此在“反转一枚硬币”后,结果应更改为 1(取最大值)。

  3. 等等

因此 if (result == n-1) return result-1; 必须放在你的程序中。没有这样的声明,你的程序就有缺陷。

public static int solution(int[] A) 
{
int n = A.length;
int result = 0;

for (int i = 0; i < n - 1; )
{
if (A[i] == A[i + 1])
result = result + 1;
i = i+1;
}
if (result == n-1) return result-1; // to cover {1,1}, {1,1,1}

int max = 0;
for (int i = 0; i <n; i++)
{
int count = 0;
if (i > 0) // starting up from 1 and covering the last
{
if (A[i-1] != A[i])
count = count + 1;
else
count = count - 1;
}
if (i < n - 1)
{
if (A[i] != A[i + 1]) // starting with 0
count = count + 1;
else
count = count - 1;
}
max = Math.max(max,count);
}
return result + max; //
}

关于java - 任务错误答案 - 算法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50357387/

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