Sunita-chandra Ответов: 2

Как написать программу на языке Си для отображения всех возможных комбинаций из двух массивов в зависимости от фильтров?


Как написать программу на языке Си для отображения всех возможных комбинаций из двух массивов в зависимости от фильтров?

У меня есть 8 массивов в общей сложности, я должен написать программу таким образом, чтобы найти все возможные комбинации таким образом, чтобы в конечном отображении было всего 14 элементов, каждый из которых выбран следующим образом,
Каждый из восьми массивов может содержать любое количество элементов (по крайней мере, для выполнения основных минимальных условий), но общее количество элементов в каждом из массивов будет равно 28.

Эти элементы будут иметь числовое значение один среди (8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5) и одна символьная строка в качестве имени переменной

выберите "2" элемента из массива 1 и массива 2 ; конечные массивы должны содержать ровно два элемента из этой группы
выберите "3-6" элементов из массива 3 и массива 4; конечные массивы должны содержать не менее 3 элементов из этой группы
выберите "2-4" элемента из массива 5 и массива 6; конечные массивы должны содержать не менее 2 элементов из этой группы
выберите "3-6" элементов из массива 7 и массива 8; конечные массивы должны содержать не менее 3 элементов из этой группы

А общее количество всех элементов конечных массивов должно быть меньше или равно 150.

И менее всего 9 элементов из массивов А1, А3, А5, А7
И менее всего 9 элементов из массивов А2, А4, А6, А8

Я не могу начать с самого алгоритма. Пожалуйста помочь.

ниже приведен пример набора данных
А1 = [Томь (8.5)]
A2 = [Рон (11.5), Ронни (12.5)]
A3 = [Эбби (12), Эбби (11,5), Алекса (11), Алекс (11), Берт(11)]
A4 = [Лекс (10), Лютор(10.5), Тор(9.5), Локи(10.5), Джек(11), Джеки(11.5)]
A5 = [Али (11.5) ли (10.5), Несси (11), нес (10.5)]
А6 = [Альфи (11), Ала (11), Гейл(11,5)]
А7 = [Энди (12), няня (10,5), Нэнси(8,5), Берни(9)]
А8 = [Кейси (12,5), Райан (10), Бен(9,5)]

И выход будет массивами из 14 имен сверху в соответствии с условиями
Например:
выходной массив1 : [том, Рон, Эбби, Эбби, Алекса, Локи, Джеки, Али, нес, Кейси, Райан, Бен, Нэнси, Берни]

Array1 имеет всего менее 150, он имеет 2 из массива 1 и 2, по крайней мере 3 из массива 3 и 4, по крайней мере 2 из массива 5 и 6, по крайней мере 3 из массива 7 и 8, и менее 9 элементов из элементов A1, A3, A5, A7 и менее 9 элементов из элементов A2, A4, A6, A8, таким образом удовлетворяя каждому условию;

Аналогично вывод должен отображать все такие массивы

Что я уже пробовал:

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

Patrice T

Дайте рабочие образцы данных для 8 массивов и начните вывод.

Sunita-chandra

А1 = [Томь (8.5)]
A2 = [Рон (11.5), Ронни (12.5)]
A3 = [Эбби (12), Эбби (11,5), Алекса (11), Алекс (11), Берт(11)]
A4 = [Лекс (10), Лютор(10.5), Тор(9.5), Локи(10.5), Джек(11), Джеки(11.5)]
A5 = [Али (11.5) ли (10.5), Несси (11), нес (10.5)]
А6 = [Альфи (11), Ала (11), Гейл(11,5)]
А7 = [Энди (12), няня (10,5), Нэнси(8,5), Берни(9)]
А8 = [Кейси (12,5), Райан (10), Бен(9,5)]

И выход будет массивами из 14 имен сверху в соответствии с условиями

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

Patrice T

пожалуйста, покажите пару выходов.
И есть ли у вас 2 или 3 возможных выбора из 2 в массивах 1 и 2 ?

Rick York

Мы здесь, чтобы помочь вам с вашим кодом. Мы здесь не для того, чтобы писать ее для вас.

2 Ответов

Рейтинг:
2

Patrice T

Цитата:
Как написать программу на языке Си для отображения всех возможных комбинаций из двух массивов в зависимости от фильтров?

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

Мой быстрый анализ говорит мне, что я бы начал с установки количества имен для выбора в каждом массиве в соответствии с условиями требования. Затем, когда я знаю, сколько имен выбрать в паре массивов, начните строить список имен для этих массивов.

После этого нужно определить недостающие детали. например: сколько выборов являются законными в них?
2, 3, 4 или 6?
A1 = [Tom (8.5)]
A2 = [Ron (11.5), Ronny (12.5)]

P1= [Tom, Ron]
P2= [Tom, Ronny]
P3= [Ron, Ronny]
P4= [Ron, Tom]
P5= [Ronny, Tom]
P6= [Ronny, Ron]

В зависимости от вашего ответа, код не тот же самый.


Рейтинг:
1

OriginalGriff

Проработайте это на бумаге: запишите свои массивы в виде отдельных строк и начните следовать правилам вручную. Каждый раз, когда вы что-то делаете, записывайте это как инструкцию.
Когда у вас есть решение, вы можете остановиться.
Как выбрать различные данные для ваших массивов и использовать сгенерированные инструкции, чтобы получить результат. Это правильно? Превосходно! Повторите несколько раз, чтобы убедиться, и вы готовы к кодированию.
Если это не так, то пересмотрите инструкции, чтобы справиться с проблемой. Попробуйте еще раз с первым набором данных, чтобы убедиться, что он не "сломан", а затем снова со вторым. Повторяйте до тех пор, пока оба набора данных не будут работать. Теперь повторите с несколькими наборами данных.

Когда ваши инструкции по эксплуатации дадут правильный результат для всех наборов данных, вы можете начать преобразовывать его в код.


Sunita-chandra

Да, я пробовал это сделать, но поскольку у него есть огромное количество возможных решений, это невозможно сделать для всего набора данных. Я получил основы формирования циклов и условий для получения желаемых выходов, но я не могу получить их в одной программе; я могу отображать возможные комбинации, проверять, лежат ли они в определенном диапазоне, и их сумма меньше 150 по отдельности, но не могу преобразовать ее в одну программу

OriginalGriff

Как бы вы сделали это вручную, без компьютера?

Patrice T

Покажите свой код до сих пор и объясните, где вы застряли.