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

Найдите количество чисел в максимальном подмножестве данного множества

13.06.2023, 11:01. Показов 4104. Ответов 8
Метки c++ (Все метки)

Студворк — интернет-сервис помощи студентам
Вам дан список целых положительных чисел -ударная сила различных типов оружия в игре. Найдите количество чисел в максимальном подмножестве данного множества, обладающем тем свойством что и все числа из этого подмножества могут быть расположены в цепочку так что каждое число либо делит либо делится на своего соседа
Первая строка ввода содержит T (1<T<35).Каждая из следующих T строк содержит количество элементов множества N (1<N<17) и N целых положительных чисел, каждое от 1 до 10^9 включительно.
Выведите T строки вида Case # A: B, где A - номер текста (начиная с 1), B - искомая величина для данного текста. С++

standard input
2

3123

523456

standard output
Case#1: 3
Case#2: 4

Вот вариант моего кода но мне дает результат только изменение кол-ва строк но сами значения не изменяются.
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
#include <iostream>
#include <vector>
using namespace std;
 
int main() {
    int T;
    cin >> T;
    for (int t = 1; t <= T; t++) {
        int N;
        cin >> N;
        vector<int> a(N);
        for (int i = 0; i < N; i++) {
            cin >> a[i];
        }
        vector<int> dp(N, 1);
        int ans = 1;
        for (int i = 1; i < N; i++) {
            for (int j = 0; j < i; j++) {
                if (a[i] > a[j]) {
                    dp[i] = max(dp[i], dp[j] + 1);
                }
            }
            ans = max(ans, dp[i]);
        }
        cout << "Case #" << t << ": " << ans << endl;
    }
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.06.2023, 11:01
Ответы с готовыми решениями:

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

Найдите сумму квадратов чисел из введённого набора от данного номера до данного номера
От и до — 2 Ограничение времени 1 секунда Ограничение памяти 64Mb Ввод стандартный ввод или input.txt Вывод стандартный вывод или...

Найдите сумму квадратов чисел из введённого набора от данного номера до данного номера
Найдите сумму квадратов чисел из введённого набора от данного номера до данного номера. Например, если введены номера «2 4», то нужно найти...

8
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
13.06.2023, 12:19
Цитата Сообщение от Евгений309 Посмотреть сообщение
standard input
2
3123
523456
Потеряны пробелы? или как интерпретировать эти строки?

Добавлено через 7 минут
Цитата Сообщение от Евгений309 Посмотреть сообщение
dp[i] = max(dp[i], dp[j] + 1);
Вы ищите какой-то максимум между числами, а задании что-то явно другое (только с трудом понимаю что):
Цитата Сообщение от Евгений309 Посмотреть сообщение
обладающем тем свойством что и все числа из этого подмножества могут быть расположены в цепочку так что каждое число либо делит либо делится на своего соседа
Вероятно "делится нацело"?
Если так - надо здорово покумекать над алгоритмом, у меня как-то не с ходу идей как такое проверять / считать
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,008
13.06.2023, 14:11
Да, там (полагаю) потеряны пробелы:
2
3 1 2 3
5 2 3 4 5 6
Суть задачи, видимо, в том, чтобы выполнялось следующее условие (при итоговом расположении) для соседних чисел:
Code
1
(НОД(a, b) == a || НОД(a, b) == b)
Для примера выше это будет (как вариант) так:
2 1 3 -> 3 числа
3 6 2 4 5 -> 4 числа (кроме 5-ки - она "выпадает")
И, как всегда, главный вопрос - способ расположения чисел "оптимальным" образом - остается открытым (по крайней мере для меня).
0
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
13.06.2023, 14:15
Цитата Сообщение от gunslinger Посмотреть сообщение
способ расположить числа "оптимальным" образом - остается открытым
И я о той же проблеме.
Есть ли способ эффективнее полного перебора?

Добавлено через 1 минуту
Цитата Сообщение от gunslinger Посмотреть сообщение
Code
1
(НОД(a, b) == a || НОД(a, b) == b)
Ну прям НОД искать не обязательно. Просто a%b == 0 || b%a == 0
1
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,008
13.06.2023, 14:33
Насчет НОД согласен. Только тогда уж проверять остатки от деления: a%b и b%a (очевидно, один из них должен быть равен 0).
А касаемо способа "кроме перебора" - тут хз, можно находить делители чисел и как-то подбирать "соседей", но четкого алгоритма придумать не могу.

Добавлено через 11 минут
Можно вокруг бОльшего числа (рядом с ним) ставить числа, являющиеся его делителями.
В начале ставить число, у которого мало (или нет) делителей, и оно само мало для кого является делителем.
В конце такой же принцип соблюдаем.
Но все это какой-то "набросок идеи".
Могу предположить, что в теории подойдет использование чего-то вроде std::next_permutation (или как там точно), но полностью в этом не уверен.
0
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
13.06.2023, 14:34
Цитата Сообщение от gunslinger Посмотреть сообщение
Только тогда уж проверять остатки от деления: a%b и b%a
Я написал деление, подумал и исправил.
Видимо вы успели прочитать исходный текст
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,008
13.06.2023, 14:47

Не по теме:

Успел...



Добавлено через 9 минут
А хотя чем не подойдет какое-то подобие перебора?
В каждой строке N < 17 элементов. Пусть даже строк T < 35.
Но если для отдельной строки "перебор" будет работать достаточно шустро, то и для всех строк суммарное время особо большим не станет.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
13.06.2023, 19:05
ИМХО, Суть задачи в том, чтобы найти цепь максимальной длины в неориентированном графе
1
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,008
14.06.2023, 16:43
Лучший ответ Сообщение было отмечено Евгений309 как решение

Решение

Сделал набросок - генерация чисел-элементов для отдельной строки, плюс некое "подобие графа" (в виде диагональной матрицы), если я правильно понимаю суть.

Остается найти цепь макс. длины (и тут "мои полномочия всё").
C++
1
2
3
4
5
6
7
8
9
10
11
12
  const N = 16;
  unsigned long num[N], max_val = 1000;  // вплоть до 10^9
  bool arr[N][N];
 
  for (int i = 0; i < N; i++)
    num[i] = random(max_val) + 1;
 
  std::sort(num, num + N);
 
  for (int i = N - 1; i >= 1; i--)
    for (int j = i - 1; j >= 0; j--)
      arr[i][j] = !(num[i] % num[j]);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.06.2023, 16:43
Помогаю со студенческими работами здесь

Найдите сумму чисел из введённого набора от данного номера до данного номера
Например, если введены номера «2 4», то нужно найти сумму чисел в наборе со 2-го по 4-е. Формат ввода На первой строке вводится...

Найдите сумму чисел из введённого набора от данного номера до данного номера
Найдите сумму чисел из введённого набора от данного номера до данного номера. Например, если введены номера «2 4», то нужно найти сумму...

Найдите количество четных цифр данного натурального числа
Помогите, пожалуйста, написать код, условия которого таковы: Найдите количество четных цифр данного натурального числа. Использовать цикл...

Найдите количество не чётных цифр данного натурального числа
Составить программы для решении задач на языке программирования С ++. 1. Найдите количество не чётных цифр данного натурального числа.

Найдите количество перестановок элементов множества
Найдите количество перестановок элементов множества (1,2,...,n) (n &gt;=1), для которых на каждой позиции, номер которой делится на 3^k (при...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru