Оптимизировать прибыль линейной матрицы, где пользователь может пропустить 1 или 2 ячейки - PullRequest
0 голосов
/ 05 февраля 2019

Инструкция: несколько ячеек расположены одна за другой по прямой линии.В i-й ячейке записано заданное целое число ai (i = 1,2,…, N).Я начинаю с первой ячейки слева и двигаюсь направо;Я могу выбрать перейти в следующую или в следующую ячейку.Каждый раз, когда я вошел в клетку я, я должен платить |ай |долларов, когда ай отрицательный, или получить ай долларов, когда ай неотрицательный.Максимум, сколько долларов я могу заработать?

Входные данные: целочисленные значения N, a1, a2,…., AN, разделенные пробелами.

Выходные данные: Одно целое число равно требуемомуприбыль.

Ограничения: 0

например,

Вход: 7 2 -1 3 –2 -1 6 -5

Выход: 10

Я пришел к решению проблемы, которую считаю верной.Тем не менее, тестировщик представлений дает мне только 5/10.

#include <stdio.h>

int main()
{
    int n,array[100];
    int i = 0;
    int sum = 0;


 scanf("%d",&n);
 for(i=0;i<n;i++){
    if(scanf("%d",&array[i])){}
 }

 for(i=0;i<n;i++)
 {
     if(array[i] >= 0)
     {
        sum += array[i];
     }
     else if(array[i] < 0 && array[i+1] < 0)
     {
         if(array[i] > array[i+1])
         {
            sum += array[i];
         }
         else if(array[i] <= array[i+1])
         {
             sum += array[i+1];
             i++;
         }
     }
 }

 printf("%d", sum);

 return 0;
}

Хотя я, кажется, могу получить надежный вывод после ввода рандомизированного ввода в пределах ограничений, код проходит только 5/10 тестов.Не могли бы вы указать на какие-либо нарушения, которые вы заметили в коде?

1 Ответ

0 голосов
/ 05 февраля 2019

Рассмотрим

0 -1 -2 -1000 0

Когда i = 1, ваш алгоритм выполнит ветвь в строке 25, поэтому выбрав 0 -1 -2 0 ячеек, хотя оптимальным решением является 0 -2 0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...