Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Harutyunyan
1 / 1 / 0
Регистрация: 28.09.2012
Сообщений: 91
#1

Задача на одномерный массив - C++

17.03.2013, 22:25. Просмотров 351. Ответов 1
Метки нет (Все метки)

Дана задача: "Лесенка"
Кликните здесь для просмотра всего текста

Вова стоит перед лесенкой из N ступеней. На каждой из ступеней написаны произвольные целые числа. Первым шагом Вова может перейти на первую ступень или, перепрыгнув через первую, сразу оказаться на второй. Также он поступает и дальше, пока не достигнет N-ой ступени. Посчитаем сумму всех чисел, написанных на ступенях через которые прошел Вова.

Требуется написать программу, которая определит оптимальный маршрут Вовы, при котором, шагая, он получит наибольшую сумму.

Входные данные
Входной файл INPUT.TXT содержит в первой строке натуральное число N – количество ступеней лестницы. Во второй строке через пробел заданы числа, написанные на ступенях лестницы, начиная с первой. Количество ступеней не превышает 1000, числа, написанные на ступенях, не превосходят по модулю 1000.

Выходные данные
Выходной файл OUTPUT.TXT должен содержать в первой строке наибольшее значение суммы. Во второй строке должны быть записаны через пробел номера ступеней по возрастанию, по которым должен шагать Вова.

Примеры:
Код
INPUT.TXT	             OUTPUT.TXT
Пример 1:
3                              4
1 2 1                         1 2 3
	                               

Пример 2:
3                              2
1 -1 1                       1 3


Я ее решаю таким образом:
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <fstream> 
 
int A[1001], B[1001], N, S, i, j, p;
 
int main()
{ 
    std::fstream I("input.txt"), O("output.txt", 2); 
    for(I >> N; I >> A[i++];);
    for(i = 0; i < N - 1; i++)
    {
        if(A[i] < 0 && 0 > A[i + 1])
        {
            if(A[i] > A[i + 1])
                B[i] = i + 1, S += A[i], p++;
            else
                B[i] = i + 2, S += A[i], p++;
        }
        if(A[i] < 0 && A[i + 1] > 0)
            B[i] = i + 2, S += A[i + 1], p++;
 
        if(A[i] > 0 && A[i + 1] < 0)
            B[i] = i + 1, S += A[i], p++;
 
        if(A[i] > 0 && 0 < A[i + 1])
            B[i] = i + 1, S += A[i], p++;
    }
    O << S << "\n";
    for(i = 0; i <= p; i++)
        O << B[i] << " ";
}


Но решение не совсем правильно.

Как решить данную задачу?

Не по теме:


Вот ссылка на задачу: ********/index.asp?main=task&id_task=329
Модераторы, источник проверяный!

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2013, 22:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задача на одномерный массив (C++):

задача по C++( одномерный массив) - C++
В одномерном массиве, состоящем из п вещественных элементов, вычислить: • сумму отрицательных элементов массива; • произведение...

Задача на одномерный массив - C++
Здаствуйте. Помогите решить задачу. Надо сформировать одномерный массив целых чисел, используя генератор случайных чисел. Уничтожить...

Задача на одномерный массив. - C++
Всем привет в данный момент нахожусь на экзамене по си++, так как много проболел не могу решить задачу. В одномерном массиве посчитать...

задача на с++( одномерный массив) - C++
помогите пожалуйста разобраться с задачей нужно сформировать массив с по следующему принципу:сi = {tgi2, если i нечетное, или i2, если i...

Задача на одномерный массив) - C++
В одномерном масиве, состоящем из n вещественных элементов, вычислить: 1) номер минимального по модулю элемента масива; 2)...

Задача на одномерный массив - C++
Дан одномерный массив из 100 элементов, состоящий из случайных вещественных чисел в диапазоне от 4 до 16. Вывести в порядке убывания те...

1
valeriikozlov
Эксперт С++
4677 / 2503 / 322
Регистрация: 18.08.2009
Сообщений: 4,550
17.03.2013, 23:55 #2
Цитата Сообщение от Harutyunyan Посмотреть сообщение
Но решение не совсем правильно.
см комментарии:
Цитата Сообщение от Harutyunyan Посмотреть сообщение
C++
1
2
3
4
5
6
7
if(A[i] < 0 && 0 > A[i + 1])
 {
 if(A[i] > A[i + 1])
 B[i] = i + 1, S += A[i], p++;
 else
 B[i] = i + 2, S += A[i], p++;// в этой строке видимо опечатка, должно быть S +=A[i+1]
 }
Цитата Сообщение от Harutyunyan Посмотреть сообщение
C++
1
2
if(A[i] > 0 && 0 < A[i + 1])
 B[i] = i + 1, S += A[i], p++;// а для этого случая не учитывается вообще что больше A[i] или A[i+1]
И еще одно упущение: если есть нули и оптимальный путь будет проходить по ним, то это вообще в коде не учитывается (нет ни одного условия, когда A[i] и A[i+1] могут быть равными 0)
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2013, 23:55
Привет! Вот еще темы с ответами:

Задача на одномерный массив - C++
Дан одномерный массив из 100 элементов, состоящий из случайных вещественных чисел в диапазоне от -55 до 16. Вывести в порядке невозрастания...

Задача по С++ на одномерный массив - C++
Написать программу которая выводит сумму четных чисел от2 до 20... с помощью одномерного массива!!!!

ЗАДАЧА НА ОДНОМЕРНЫЙ МАССИВ - C++
Дано N действительных случайных чисел в диапазоне от 2 до 10. Определить, какое из них на числовой оси лежит ближе к целому числу. как...

Задача на одномерный массив (сортировка) - C++
Помоги тебе решить задачу, пожалуйста. Дан одномерный массив из N элементов. Не заводя дополнительного массива отсортировать данный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru