Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
1 / 5 / 0
Регистрация: 16.10.2017
Сообщений: 170

Рекурсия: определите подмножество данных чисел, дающих сумму меньше, чем Z и с количеством членов большим чем K

30.01.2018, 17:19. Показов 1705. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
имеется n различных натуральных чисел. определите подмножество данных чисел, дающих сумму меньше, чем заданное число z и с количеством членов(в сумме) больше, чем заданное число к. гарантируется, что такое подмножество одно. числа перечислять в том порядке, в котором они находятся в исходном множестве.
вот код:
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
32
33
34
35
36
int n;
int z;
int s;
int k;
int a[20];
char f[20];
void printrez() {
    int i;
    for (i = 1; i <= n; i++)
        if (f[i] == '+') cout<< a[i];
}
void poisk(int r) {
    int i;
    int e = 0;
    s = s + a[r];
    e++;
    f[r] = '+';
    if ((s < z) && (e > k)) printrez();
    else if (s > z)
        for(i=r+1; i<=n; i++)
        poisk(i);
    s = s - a[r];
    e--;
    f[r] = ' ';
}
int main()
{
    
    cin>> n >> k >> z;
    int j;
    for (j = 1; j <= n; j++)
        pt >> a[j];
    for (j = 1; j <= n; j++)
        poisk(j);
 
}
почему не работает?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.01.2018, 17:19
Ответы с готовыми решениями:

Найти элемент в массиве реальных чисел и его номер среди чисел, больше чем 7.8 и меньше чем 50.2
Найти элемент массиву реальных (дійсних) чисел (12.37, 2.43, 16.55, 0.81, 0.32, 1.345, -12.18, 0.15, 4.314, 1.29, 54.38, 0.214, 3.837,...

Найти элемент в массиве реальных чисел и его номер среди чисел, больше чем 7.8 и меньше чем 50.2
Найти элемент массиву реальных (дійсних) чисел (12.37, 2.43, 16.55, 0.81, 0.32, 1.345, -12.18, 0.15, 4.314, 1.29, 54.38, 0.214, 3.837,...

Массив заполняется количеством элементов, большим, чем положено
Объясните, почему память ведь выделена статически, но заполняются больше элементов/печатается всё слово в котором явно не 2 символа?(просто...

7
184 / 192 / 48
Регистрация: 25.08.2011
Сообщений: 792
30.01.2018, 17:40
отредактируйте выравнивание у меня сейча глаза повыпадают))
0
13 / 13 / 5
Регистрация: 18.06.2017
Сообщений: 31
30.01.2018, 20:28
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
32
33
34
35
36
37
38
39
40
41
#include <vector>
#include <iostream>
 
using namespace std;
 
bool search(const vector<int>& set, int z, int k, vector<int>& out, int i = 0, int s = 0) {
    while (i < set.size()) {
        if (s + set[i] < z) {
            out.push_back(set[i]);
            if (out.size() > k) {
                return true;
            }
            else if (search(set, z, k, out, i + 1, s + set[i])) {
                return true;
            }
            out.pop_back();
        }
        ++i;
    }
    return false;
}
 
int main() {
    int n; cin >> n;
 
    vector<int> set(n);
    for (int i = 0; i < n; ++i) {
        cin >> set[i];
    }
 
    int z; cin >> z;
    int k; cin >> k;
 
    vector<int> out; out.reserve(set.size());
 
    search(set, z, k, out);
 
    for (int i = 0; i < out.size(); ++i) {
        cout << out[i] << ' ';
    }
}
0
1 / 5 / 0
Регистрация: 16.10.2017
Сообщений: 170
31.01.2018, 14:40  [ТС]
kmqrce, отлично, но мне рекурсия нужна в функции поиска, помогите эту функцию написать

Добавлено через 26 минут
kmqrce, Вы можете исправить мою функцию?

Добавлено через 15 минут
kmqrce, пожалуйста

Добавлено через 4 часа 12 минут
help, please
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33394 / 21504 / 8236
Регистрация: 22.10.2011
Сообщений: 36,900
Записей в блоге: 12
31.01.2018, 14:43
Цитата Сообщение от lukinyx99 Посмотреть сообщение
но мне рекурсия нужна в функции поиска
А в 13 строке что, нет рекурсивного вызова search?
0
1 / 5 / 0
Регистрация: 16.10.2017
Сообщений: 170
31.01.2018, 16:54  [ТС]
volvo, поняла уже, что есть
но мне надо полегче решение, без функций вектора и т.д.
помогите исправить мою функцию, пожалуйста

Добавлено через 2 часа 6 минут
что не так с моей функцией???
0
0 / 0 / 0
Регистрация: 08.11.2022
Сообщений: 2
13.01.2023, 14:55
lukinyx99, смогли решить задачу?
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
13.01.2023, 19:30
ekky, так задача в теме решена, судя по kmqrce. Что тебе ещё надо?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.01.2023, 19:30
Помогаю со студенческими работами здесь

Вычислить сумму и количество отрицательных элементов массива, которые больше чем b и меньше чем a
Требуется помощь в написании программы по обработке одномерного массива в Delphi. Условие: Обчислить сумму и количество отрицательных...

Сколько существует подмножеств данных чисел, дающих в сумме значение меньше z?
помогите решить задачу имеется n различных натуральных чисел. определите, сколько существует подмножеств данных чисел, дающих в сумме...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru