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

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

Войти
Регистрация
Восстановить пароль
 
NanoBreaker
23 / 23 / 7
Регистрация: 11.07.2013
Сообщений: 89
#1

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

03.05.2014, 19:13. Просмотров 316. Ответов 2
Метки нет (Все метки)

Доброго времени суток.

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

Есть следующие входные данные:
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++
Получить новую матрицу S(N,M) путём сложения всех элементов заданной матрицы C(N,M) с её наибольшим по модулю элементом. тип элементов...

Рекурсия. Умножение чисел путём сложения/вычитания - C++
Код: // b должен быть больше нуля, чтобы не получилось бесконечной рекурсии int mystery(int a, int b) { if(b == 1) ...

Нахождение пар чисел равныхпроизведению заданного числа( одномерный массив) - C++
Составить программу, которая в целочисленном массиве А, состоящем из N чисел находит количество таких пар элементов, произведение которых...

Определить номер числа в последовательности, по абсолютной величине самого близкого к своему номеру - C++
язык C++ Вводится последовательность вещественных чисел, оканчивающаяся нулём, и состоящая более чем из одного ненулевого элемента....

Подсчитать количество простых чисел в последовательности, больших заданного числа М - C++
Подсчитать количество простых чисел в последовательности, больших заданного числа М. Пример: М=5, 2 3 4 7 19 18 7 8 11 15; результат:...

Подсчитать количество простых чисел в последовательности, больших заданного числа М - C++
Всем привет)) помогите разработать программу С++! Тема: Одномерные массивы. Разработать программу на языке программирования согласно...

Определить сумму последовательности чисел, которые меньше заданного числа - C++
Дана последовательность вещественных чисел а1, а2, …., а15 упорядоченная по возрастанию, и число n, не равное ни одному из чисел...

В заданной последовательности чисел найти два наименьших числа - C++
В связи с визитом Императора Палпатина было решено обновить состав дроидов в ангаре 32. Из-за кризиса было решено новых дроидов не...

В последовательности целых чисел заменить все элементы, меньшие заданного числа - C++
Дана последовательность целых чисел. Заменить все элементы, меньшие заданного числа, этим числом.

Для заданного числа x вычислить первое из чисел последовательности sinx, sinsinx, sinsinsinx, ... - C++
Для заданного числа x вычислить первое из чисел последовательности sinx, sinsinx, sinsinsinx, ..., меньшее по модулю 10-N. Значение N...

В последовательности целых чисел заменить все элементы, меньшие заданного числа, этим числом - C++
Собственно такая задача) Буду благодарен за любую помощь.

Определить среднее арифметическое тех чисел заданной последовательности, которые больше некоторого числа n - C++
Даны натуральное число 'x' и целые числа 'a1,a2, ..., ax'. Определить среднее арифметическое тех чисел ai, которые больше некоторого числа...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zitxbit
Master C/C++
88 / 740 / 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
23 / 23 / 7
Регистрация: 11.07.2013
Сообщений: 89
03.05.2014, 20:27  [ТС]     Нахождение заданного числа в последовательно (или близкого к нему) путём сложения чисел в заданной последовательности #3
Спасибо за ответ и предоставленное решение, но есть такая малюсенькая, прималюсенькая проблемочка, ответ то не совпал =D

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

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