Форум программистов, компьютерный форум CyberForum.ru

Нахождение заданного числа в последовательно (или близкого к нему) путём сложения чисел в заданной последовательности - C++

Восстановить пароль Регистрация
 
NanoBreaker
 Аватар для NanoBreaker
23 / 23 / 7
Регистрация: 11.07.2013
Сообщений: 82
03.05.2014, 19:13     Нахождение заданного числа в последовательно (или близкого к нему) путём сложения чисел в заданной последовательности #1
Доброго времени суток.

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

Есть следующие входные данные:
1. Последовательность чисел, максимальная длина такой последовательности - 100 чисел.
2. И число, которое является ограничителем, назовем его MAX.

Суть задачи такова, сложить числа из данной последовательности так, чтоб получить максимально близкое число к числу MAX, или чтоб оно равнялось MAX. Еще есть такая пакость, следующее прибавляемое число должно быть больше суммы всех предыдущих чисел (пример: 2 + 5 + 8 - верно, 2 + 5 + 6 - неверно т.к. 2 + 5 > 6).

Пример:
Последовательность: 8 5 2 36 70 17
MAX = 50

Ответ: 5 + 8 + 36 = 49 ( в данном ответе, это число не равно MAX, но оно самое близкое к нему )
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2014, 19:13     Нахождение заданного числа в последовательно (или близкого к нему) путём сложения чисел в заданной последовательности
Посмотрите здесь:

Нахождение пар чисел равныхпроизведению заданного числа( одномерный массив) C++
C++ Получить новую матрицу путём сложения всех элементов заданной матрицы (язык C)
C++ Для заданного числа x вычислить первое из чисел последовательности sinx, sinsinx, sinsinsinx, ...
C++ Дан массив упорядоченных по возрастанию целых чисел. разработать алгоритм бинарного поиска заданного числа, результат номер искомого числа или 0 если
Массив: Написать программу, которая выводит в окне последовательно числа заданного массива. C++
C++ В последовательности целых чисел заменить все элементы, меньшие заданного числа
Подсчитать количество простых чисел в последовательности, больших заданного числа М C++
Определить сумму последовательности чисел, которые меньше заданного числа C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
03.05.2014, 19:50     Нахождение заданного числа в последовательно (или близкого к нему) путём сложения чисел в заданной последовательности #2
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
31
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
#define N 6
 
const int MAX = 50;
 
int main(int argc, char* argv[])
{
    int A[N] = { 8, 5, 2, 36, 70, 17 };
    int total = 0, r = 0, *P = new int[N];
    for (int index = 0; index < N && total < MAX; index++)
    {
        int nindex = index - 1, sum_prev = 0;
        while (nindex >= 0) sum_prev += A[nindex--];
        if (sum_prev < A[index] || sum_prev == 0) {
            if ((total + A[index]) < MAX) P[r++] = A[index];
            total += ((total + A[index]) < MAX) ? A[index] : 0;
        }
    }
 
    for (int t = 0; t < r; t++)
        printf((t < r - 1) ? "%d+" : "%d", P[t]);
 
    printf("\ntotal = %d\n", total);
 
    _getch();
 
    return 0;
}
http://codepad.org/fyNXMtja
Миниатюры
Нахождение заданного числа в последовательно (или близкого к нему) путём сложения чисел в заданной последовательности  
NanoBreaker
 Аватар для NanoBreaker
23 / 23 / 7
Регистрация: 11.07.2013
Сообщений: 82
03.05.2014, 20:27  [ТС]     Нахождение заданного числа в последовательно (или близкого к нему) путём сложения чисел в заданной последовательности #3
Спасибо за ответ и предоставленное решение, но есть такая малюсенькая, прималюсенькая проблемочка, ответ то не совпал =D

Можно же начать с 5-ки, и тогда результат будет 5 + 8 + 36 = 49, который нас удовлетворяет ( 49 <= 50 ). Надо найти наибольшее существующее число для данной последовательности.
Yandex
Объявления
03.05.2014, 20:27     Нахождение заданного числа в последовательно (или близкого к нему) путём сложения чисел в заданной последовательности
Ответ Создать тему
Опции темы

Текущее время: 13:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru