Проблема смежных монет (The Adjacent Coins Problem)
От: licedey  
Дата: 07.11.16 12:41
Оценка:
Описание и правильная реализация тут.
Есть задача, исправить предложенный ниже вариант изменив не более трех строк.
На тестовом наборе, где например A[] = { 0, 0 }, правильная реализация выдает 0, та что ниже — 1.
Помогите исправить ошибку.

public int solution(int[] A)
{
    // n length of the array
    int n = A.Length;
    int result = 0;            

    // Calculate the number of consecutive identical ones, for both sides
    for (int i = 0; i < n - 1; i++) // why n - 1
    {
        if (A[i] == A[i + 1])
            result = result + 1;
    }
    // Calculate max delta
    int r = 0;
    for (int i = 0; i < n; i++)
    {
        // count : current delta
        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);
    }
    // max consecutive ones + ?
    return result + r;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.