Вопросы с тегами [combinations]

10

голосов
3

ответ
14.5k

Просмотры

Python - получить все перестановки списка без повторений

Я знаю, что я могу использовать itertools.permutation, чтобы получить все перестановки размера г. Но для itertools.permutation ([1,2,3,4], 3) он будет возвращать (1,2,3), а также (1,3,2). Я хочу, чтобы фильтровать эти повторы (т.е. получить комбинации) Есть простой способ получить все перестановки (все длины)? Как я могу преобразовать itertools.permutation () приводит к обычному списку?
Bush
5

голосов
1

ответ
982

Просмотры

Using LINQ to iterate combinations [duplicate]

Possible Duplicate: Generating all Possible Combinations Is there a good LINQ way to do a cartesian product? How to generate combination of N elements with limited supply of 2 each without explicit nested loops I have a list of lists, and I want to iterate all the possible combinations where I choose one element from each inner list. This is pretty straightforward if I know at compile-time how many lists there are, but how can I do it when I don't know in advance how many lists there will be? If I have three lists (and if I know, at compile-time, that there will be exactly three lists), and I want all the combinations of choosing a single element from each of the three lists, I can do that easily with a LINQ query: var list1 = new[] { 1, 2 }; var list2 = new[] { 3, 4 }; var list3 = new[] { 5, 6 }; var combinations = from item1 in list1 from item2 in list2 from item3 in list3 select new[] { item1, item2, item3 }; // Results: // {1, 3, 5} // {1, 3, 6} // {1, 4, 5} // {1, 4, 6} // {2, 3, 5} // {2, 3, 6} // {2, 4, 5} // {2, 4, 6} But how can I do the same thing when I don't know at compile-time how many lists there will be? var lists = new[] { new[] { 1, 2 }, new[] { 3, 4 }, new[] { 5, 6 } }; var combinations = ???; // This particular example happens to be the same inputs as above, so it // has the same expected outputs. But there could be two lists instead, // or four, so the three hard-coded "from" clauses won't work. It seems like this should actually be doable in LINQ -- SelectMany already does the equivalent of two nested foreach loops, so all I need to do is do a bunch of SelectMany calls and then combine all the results with another SelectMany. Or something. But when it starts getting meta like that, my brain gets all tied in knots. I can't get a handle on how to put the pieces together. I can't even figure out what the generic type arguments to the outer SelectMany call would be. How can I iterate those lists of lists, and return all the combinations, without knowing at compile-time how many lists there will be? (Note: everywhere I used arrays above, I'd be fine with using IEnumerable instead. Arrays are easier to write in sample code, but I'm expecting that the output is more likely to be in the form IEnumerable rather than the int[][] I show in my sample output above.)
Joe White
2

голосов
1

ответ
83

Просмотры

Сформировать возможные комбинации и получить первые 50 только

Я ищу способ, чтобы получить первые 50 только из возможных комбинаций (20 в фиксированной длине) с условиями, но я не могу показаться, чтобы найти то, что я ищу. У меня есть пример ниже. импорта itertools а = массив ([1,2,5]) б = массив ([8,9,10]) с = 0, если с == 1: х = ау = Ь еще: х = с = а = MyList список (itertools.product (х, у, х, у, х, у, х, у, х, у, х, у, х, у, х, у, х, у, х, у)) Мой результат будет : (8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1) (8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 2) (8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 5) (8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 2 8 1) (8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 8 2 2) (8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 8 2 5). , и так далее .. Я уже произошла ошибка памяти. Я думаю, что это слишком много комбинаций, так что я просто хочу, чтобы получить первые 50 только. Есть ли способ сделать это? Заранее спасибо!
user2206764
5

голосов
1

ответ
774

Просмотры

Возможные комбинации списка

У меня есть ArrayList объектов, которые я хочу, чтобы создать все возможные комбинации (в соответствии с простым набором правил). Каждый объект, который хранится в списке занимает squadNumber и строку. Ниже приведен пример типичного списка я хранящий: 0: 1, 1: 1, B 2: 2, 3: 2, B 4: 3, C 5: 3, D 6: 4, С 7: 4 Д.И. хотят получить все комбинации, где каждый squadNumber может присутствовать только один раз, например: (1, А), (2, А), (3, C), (4, C), то следующий комбинация будет ( 1, А), (2, А), (3, С), (4, D). Как будет идти об этом в Java? Обычно я хотел бы использовать вложенный цикл, но тот факт, что все это хранится в одном списке усложняет вещи для меня. Спасибо, paintstripper
paintstripper
1

голосов
4

ответ
508

Просмотры

Practical Perl solution to permutate through list for unique combinations

Извинения, если это выглядит как еще одна проблема - есть довольно много решений, и я не нашел то, что я ищу, но я вполне пропустил его. Также извинения, если название не лучшее описание - не уверен, как еще слова его. У меня есть пять «функции» как строки, например: $ высоты $ ширина $ глубины $ длина $ цвет Я хочу, чтобы все различные уникальные комбинации, начиная с 5 и спускаясь до 1, например: 5: $ высоты $ ширина $ глубины $ длина $ цвет 4: $ высоты $ ширина $ глубина $ длина 4: $ высоты $ ширина $ глубина $ цвет 4: $ высоты $ ширина $ длина $ цвет 4: $ высоты $ глубины $ длина $ цвет 4: $ ширины $ глубины $ длина $ цвет ... и так далее ... 1: $ 1 высота: $ ширина 1: $ глубина 1: $ длина 1: $ цвет я не знаю, если это имеет значение, но в коде я планирую использовать && и $ строка, например: 4: $ высота && $ ширина && $ Глубина && $ длина && $ цвет 4:! $ Высота && $ ширина && $ глубина && $ длина && $ цвет 4: $ высота && $ ширина && $ глубина && $ длина && $ цвет 4:! $ Высота && $ ширина && $ глубина && $ длина && $ 4 цвета: $ высота && $ ширин && $ глубина && $ длина && $ цвета и так далее. Я был в порядке делать это вручную, когда я имел 4 функции, но с 5 это слишком много! Я думал положить переменные в хэш бы может быть хорошей отправной точкой, но для реального алгоритма ... Любая помощь приветствуется! Edit: просто понял, что это может быть не ясно, но я хочу, чтобы быть в состоянии «запрос» каждую комбинацию, как они будут, если / ELSIF заявления, так что если (ч && ш && d ...!) & $ Ширина && $ глубина && $ длина && $ цвет 4: $ высота && $ ширина && $ глубина && $ длина && $ цвет 4:! $ Высота && $ ширина && $ глубина && $ длина && $ цвет 4: $ && $ высота ширина && $ глубина && $ длина && $ цвет и так далее. Я был в порядке делать это вручную, когда я имел 4 функции, но с 5 это слишком много! Я думал положить переменные в хэш бы может быть хорошей отправной точкой, но для реального алгоритма ... Любая помощь приветствуется! Edit: просто понял, что это может быть не ясно, но я хочу, чтобы быть в состоянии «запрос» каждую комбинацию, как они будут, если / ELSIF заявления, так что если (ч && ш && d ...!) & $ Ширина && $ глубина && $ длина && $ цвет 4: $ высота && $ ширина && $ глубина && $ длина && $ цвет 4:! $ Высота && $ ширина && $ глубина && $ длина && $ цвет 4: $ && $ высота ширина && $ глубина && $ длина && $ цвет и так далее. Я был в порядке делать это вручную, когда я имел 4 функции, но с 5 это слишком много! Я думал положить переменные в хэш бы может быть хорошей отправной точкой, но для реального алгоритма ... Любая помощь приветствуется! Edit: просто понял, что это может быть не ясно, но я хочу, чтобы быть в состоянии «запрос» каждую комбинацию, как они будут, если / ELSIF заявления, так что если (ч && ш && d ...!) $ Длина && $ 4 цвета: $ высоты && $ ширин && $ глубина && $ длина && $ 4 цвета: $ высота && $ ширин && $ глубина && $ длина && $ цвета и так далее. Я был в порядке делать это вручную, когда я имел 4 функции, но с 5 это слишком много! Я думал положить переменные в хэш бы может быть хорошей отправной точкой, но для реального алгоритма ... Любая помощь приветствуется! Edit: просто понял, что это может быть не ясно, но я хочу, чтобы быть в состоянии «запрос» каждую комбинацию, как они будут, если / ELSIF заявления, так что если (ч && ш && d ...!) $ Длина && $ 4 цвета: $ высоты && $ ширин && $ глубина && $ длина && $ 4 цвета: $ высота && $ ширин && $ глубина && $ длина && $ цвета и так далее. Я был в порядке делать это вручную, когда я имел 4 функции, но с 5 это слишком много! Я думал положить переменные в хэш бы может быть хорошей отправной точкой, но для реального алгоритма ... Любая помощь приветствуется! Edit: просто понял, что это может быть не ясно, но я хочу, чтобы быть в состоянии «запрос» каждую комбинацию, как они будут, если / ELSIF заявления, так что если (ч && ш && d ...!) Я был в порядке делать это вручную, когда я имел 4 функции, но с 5 это слишком много! Я думал положить переменные в хэш бы может быть хорошей отправной точкой, но для реального алгоритма ... Любая помощь приветствуется! Edit: просто понял, что это может быть не ясно, но я хочу, чтобы быть в состоянии «запрос» каждую комбинацию, как они будут, если / ELSIF заявления, так что если (ч && ш && d ...!) Я был в порядке делать это вручную, когда я имел 4 функции, но с 5 это слишком много! Я думал положить переменные в хэш бы может быть хорошей отправной точкой, но для реального алгоритма ... Любая помощь приветствуется! Edit: просто понял, что это может быть не ясно, но я хочу, чтобы быть в состоянии «запрос» каждую комбинацию, как они будут, если / ELSIF заявления, так что если (ч && ш && d ...!)
dgBP
1

голосов
4

ответ
64

Просмотры

вернуть все возможные комбинации из ДНК

Мой код ниже дает мне все возможные комбинации ДНК. Есть ли более эффективные, экологически чистые способы сделать это? Кроме того, для любой биоинформатики или биотехнологических программистов, какие модули я должен стать наиболее знаком? ДНК = «а», «т», «г», «с» = LIS [] Защиту all_combos (): для в А: при т в А: для г в А: для С в: lis.append ( [а, т, г, с]) возврата лис печати (all_combos ())
bnicholl
2

голосов
1

ответ
77

Просмотры

Как найти наилучшее сочетание цифр для того, чтобы получить максимальную сумму?

Мне нужно решение, которое делает следующее: Из приведенной ниже таблицы, выберите номер из каждой строки и столбца, которые являются лучшими в сумму вместе для того, чтобы получить максимальную сумму. Там должно быть выбор на каждой строки и столбца, но выборка не может быть на одной и той же строке или столбце. Я предубеждения о выходе или методе. Я больше обеспокоен процесс here.Thanks для любого решения или советов заранее. Таблица 14 14 12 10 9 3 0 0 0 0 0 0 14 7 16 12 10 7 8 2 3 0 0 0 10 8 9 4 3 3 12 5 5 5 0 0 желаемому результату: (например) 14 0 16 0 4 12
1

голосов
1

ответ
49

Просмотры

Найти все комбинации наборов

Предположим, что мы имеем 2 х N матрицу в виде А = | a1 a2 ... | | b1 b2 ... Bn | Есть 2 ^ N комбинаций, как строка может быть изменена. Я хотел бы найти матрицу B, содержащий все комбинации. %% N = 2 B = | a1 a2 | | A1 b2 | | B1 a2 | | B1 b2 | %% N = 3 B = | a1 a2 a3 | | A1 a2 b3 | | A1 b2 a3 | | A1 b2 b3 | | B1 a2 a3 | | B1 a2 b3 | | B1 b2 a3 | | B1 b2 b3 | Это очень похоже на таблицы, используемых для обучения основ булевой алгебры (ай = 0, би- = 1). Вопрос может быть расширен для создания M ^ N х N матрицу из М х N.
Crowley
4

голосов
2

ответ
228

Просмотры

Algorithm for generating “anti-Gray” on-demand combinations of k elements from n

I'm trying to implement an algorithm to get all combinations of k elements out of a set of n elements where the difference between two consecutive combinations are maximized (so kind of reverse Gray codes). In other words, the combinations should be ordered to avoid elements from appearing twice in a row, and so that no element is unnecessarily discriminated. Ideally, the algorithm would also NOT pre-calculate all combinations and store them into memory, but rather deliver combinations on demand. I have searched extensively for this and found a few detailed answers such as https://stackoverflow.com/a/127856/1226020, but I can't seem to apply this. Also, many of the articles linked in that answer are paid content. To illustrate what I mean: From a set of [0, 1, 2, 3, 4], find all combinations of two elements. Using a simple algorithm that tries to increment the right-most element until no longer possible, then moving left, incrementing the previous digit etc, I get the following results: [0, 1] [0, 2] [0, 3] [0, 4] [1, 2] [1, 3] [1, 4] [2, 3] [2, 4] [3, 4] I produce this result with the following Java code: public class CombinationGenerator { private final int mNrElements; private final int[] mCurrentCombination; public CombinationGenerator(int n, int k) { mNrElements = n; mCurrentCombination = new int[k]; initElements(0, 0); // fake initial state in order not to miss first combination below mCurrentCombination[mCurrentCombination.length - 1]--; } private void initElements(int startPos, int startValue) { for (int i = startPos; i < mCurrentCombination.length; i++) { mCurrentCombination[i] = i + startValue - startPos; } } public int[] getNextCombination() { for (int i = 0; i < mCurrentCombination.length; i++) { int pos = mCurrentCombination.length - 1 - i; if (mCurrentCombination[pos] < mNrElements - 1 - i) { initElements(pos, mCurrentCombination[pos] + 1); return mCurrentCombination; } } return null; } public static void main(String[] args) { CombinationGenerator cg = new CombinationGenerator(5, 2); int[] c; while ((c = cg.getNextCombination()) != null) { System.out.println(Arrays.toString(c)); } } } This is not what I want, because I want each consecutive combination to be as different as possible from the previous one. Currently, element "1" appears four times in a row, and then never again. For this particular example, one solution would be: [0, 1] [2, 3] [0, 4] [1, 2] [3, 4] [0, 2] [1, 3] [2, 4] [0, 3] [1, 4] I have indeed managed to accomplish this result for this particular case by applying a sorting algoritm after the combinations are generated, but this does not fulfill my requirement of on-demand combination generation as the entire set of combinations has to be generated at once, then sorted and kept in memory. I'm not sure it works for arbitrary k and n values either. And finally, I'm pretty sure it's not the most efficient way as the sorting algorithm basically loops through the set of combinations trying to find one sharing no elements with the previous combination. I also considered keeping a table of "hit counts" for each element and use that to always get the next combination containing the lowest combined hit count. My somewhat empirical conclusion is that it will be possible to avoid elements from completely appearing in two consecutive combinations if n > 2k. Otherwise, it should at least be possible to avoid elements from appearing more than twice in a row etc. You could compare this problem to what is achieved for k = 2 using a standard round-robin scheme for football games etc, but I need a solution for arbitrary values of k. We can imagine this to be a tournament of some sort of game where we have n players that are to play against all other players in a set of games, each game holding k players. Players should as far as possible not have to play two games in a row, but should also not have to wait unnecessarily long between two game appearances. Any pointers on how to solve this either with a reliable sorting algorithm post generation, or - preferably - on-demand, would be awesome! Note: Let's typically assume that n
JHH
5

голосов
4

ответ
154

Просмотры

Комбинации двух непоследовательных элементов

Учитывая список, как я могу получить все комбинации между двумя непоследовательными элементами? Например, для ввода [1, 2, 3, 4, 5] как можно получить выходной [(1,3), (1,4), (1,5), (2,4), (2, 5), (3,5)]? Я не заинтересован в (1,2), (2,3), (3,4) или (4,5), потому что они являются последовательными (т.е. рядом друг с другом) в списке, но все остальное я интересно. Что наиболее идиоматических способ сделать это в Python?
fabiomaia
2

голосов
2

ответ
109

Просмотры

Clojure комбинаторика - не лечите список ввода как мультимножестве

Для задач комбинаторики, я использую clojure.math.combinatorics, это здорово, но я был немного удивлен ниже результате первый раз, когда я столкнулся с ним (несмотря на четко прописаны в документации). Clojure "интеллектуально обрабатывает дубликаты" обработки коллекции ввода в качестве мультимножестве: (комбинированные / комбинации [1 1 1 2 2] 3) => ((1 1 1) (1 1 2) (1 2 2)) Опять же, это хорошо документировано и предназначено поведение, он просто меня удивил, исходя из питона фона, где комбинации рассматриваются как они на самом деле представлены в коллекции ввода, а не рассматривать как мультимножество. лист (itertools.combinations ([1,1,1,2,2], 3)) => [(1, 1, 1), (1, 1, 2), (1, 1, 2), (1 , 1, 2), (1, 1, 2), (1, 2, 2), (1, 1, 2), (1, 1, 2), (1, 2, 2), (1, 2 , 2)] Я полагал, что, вероятно, либо другая функция, или параметр, который может подаваться, чтобы получить последнее поведение, но это, кажется, не так. Я просто интересно, если есть еще одна каноническая библиотека, которая делает это, или если это «свернуть свою собственную» ситуацию - что, где мое первоначальное исследование ведет меня. Я не думаю, что я пишу функции почти столь же элегантно, как то, что в библиотеке комбинаторики, так что я действительно надеялся, были существующими эффективные реализации хорошего, ленивым поведения, но со стандартной семантикой, показанной в примере питона.
Solaxun
4

голосов
2

ответ
1.5k

Просмотры

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

Рассмотрим все комбинации длины 3 следующего целого числа множества {1,2,3}. Я хотел бы пройти всю комбинацию длиной 3 с использованием следующего алгоритма из Википедии // найти следующий K-комбинация BOOL next_combination (без знака длиной & х) // Предположим, х имеет вид X'01 ^ a10 ^ Ь в двоичном {без знака длинных и = х & -x; // извлечь крайний правый бит 1; и = 0'00 ^ а10 ^ Ь без знака длиной v = и + х; // установить последние не замыкающие бит 0, и ясно справа; v = x'10 ^ а00 ^ Ь, если (v == 0) // затем переполнение V, или х == 0 возвращение ложным; // сигнализировать, что в следующем K-комбинация не может быть представлена ​​х = у + (((V ^ х) / и) >> 2); // V ^ х = 0'11 ^ а10 ^ Ь, (V ^ х) / и = 0'0 ^ б1 ^ {а + 2}, и х ← x'100 ^ б1 ^ возврат истинно; // успешного завершения} Что должно быть моим начальным значением для этого алгоритма для всех комбинации {1,2, 3}? Когда я получаю выход алгоритма, как я могу восстановить комбинацию? Я стараюсь следующий прямой адаптации, но я новичок в побитовое арифметика, и я не могу сказать, если это правильно. // найти следующие к-комбинацию, Java INT next_combination (целое х) {INT и = х и -й; INT v = и + х; если (v == 0) возвращение v; х = у + (((V ^ х) / и) >> 2); вернуться х; }
3

голосов
3

ответ
81

Просмотры

Последовательность Комбинация матрицы в R

Я ищу, чтобы создать матрицу для 5 переменных, таких, что каждая переменная принимает значение из SEQ (от = 0, к = 1, length.out = 500) и rowSums (данные) = 1. Другими словами, я задаюсь вопросом, как создать матрицу, которая показывает все возможные комбинации чисел с суммой каждой строки = 1.
Cezar Visan
2

голосов
2

ответ
262

Просмотры

Наиболее подходящий алгоритм комбинаторика

Есть 6 мест и 4-х человек, для которых места должны быть распределены в соответствии с некоторым критерием оптимальности. Например: Распределение 1: _ _ _ _ _ _ 1 2 3 4 Allocation 2: _ _ _ _ _ _ 1 3 2 4 ... Вопрос 1: Какая проблема комбинаторика это? Вопрос 2: Что такое название наиболее подходящий алгоритм для поиска всех возможных комбинаций?
Klausos Klausos
2

голосов
2

ответ
232

Просмотры

Найти все возможные комбинации чисел из строки числа, сохраняя исходный порядок

Скажем, если у вас есть строка: 1234 Что мне нужно, чтобы генерировать все возможные комбинации чисел из этой строки, но исходный порядок строки должен быть сохранен. Кроме того, должно быть по крайней мере 2 числа в каждом результате. В случае 1234 на выходе будет список из списка списков вывода: список: 1, 2, 3, 4 списка: 12, 3, 4 списка: 123, 4 --Примечания списка, содержащий только 1234 не является действительным списком: 1, 23, 4 списка: 1, 234 списка: 1, 2, 34 списка: 12, 34 Также отметит, что числа в каждом из списка результатов всегда заказало так же, как исходная строку 1234. Таким образом, список с комбинацией 34, 21 или 213, 4 не является действительным. Единственный подход, который я могу думать: Начало на 1-й индекс (1) Добавьте следующий номер, чтобы сформировать новый номер (12) Тогда рекурсивно проходит в новообразованной номер, чтобы добавить следующий номер (123) После того, как первый индекс делается ,
Noodles
1

голосов
3

ответ
158

Просмотры

Комбинации Python

Предположим, у меня есть список Python, который выглядит следующим образом: [1, 2, 3, 4] Я хотел бы иметь возможность возвращать список списков, содержащих все комбинации двух или более цифр. Порядок значений не имеет значения, так что 1,2 такой же, как 2,1. Я также хотел бы вернуться еще один список, содержащий значения, которые не показывают в каждой комбинации. Например: Комбинация 1,2 / 3,4 Combination остатках 2,3 / 1,4 Комбинированный Остаток 1,2,3 / 4 Комбинация Остаток 1,2,3,4 / Остаток - Возвращаемые списки для указанной выше комбинации будет = [[1,2], [2,3], [1,2,3], [1,2,3,4]] Остаток = [[3,4], [1,4], [4] []] Я только показал несколько примеров ... Я понимаю, что первая часть, вероятно, может быть достигнута с помощью itertools.combinations, но как я могу вернуть эти значения не используется в комбинации без зацикливания?
Mark
10

голосов
10

ответ
2.8k

Просмотры

Алгоритм знакомства Speed

Я работаю в консалтинговой организации, и я большую часть времени в местах заказчика. Из-за того, что я редко встречаюсь со своими коллегами. Для того, чтобы узнать друг друга лучше, мы собираемся устроить обед. Там будет много столиков, чтобы люди могли поболтать. Для того, чтобы говорить, как много разных людей, как это возможно во время партии, каждый должен переключаться таблицы на некотором интервале, скажем, каждый час. Как написать программу, которая создает график переключения таблицы? Просто чтобы дать вам некоторые цифры; в этом случае будет около 40 человек и может быть на каждом столе в более 8 человек. Но, алгоритм должен быть универсальным, конечно,
Hallis
2

голосов
1

ответ
47

Просмотры
2

голосов
1

ответ
1.4k

Просмотры

Сложность Время комбинации скобок

Я пытался сделать классическую задачу реализовать алгоритм для печати всех допустимых комбинаций п пар скобок. Я нашел эту программу (которая работает отлично): государственная статическая сила addParen (список ArrayList, внутр leftRem, внутр rightRem, голец, ул граф ИНТ []) {если (leftRem <0 || rightRem <leftRem) возвращение; // недопустимое состояние, если (leftRem == 0 && rightRem == 0) {/ * все из левых и правых скобок * / String з = String.copyValueOf (НТР); list.add (ы); } Еще {если (leftRem> 0) {// попробовать левую скобку, если есть некоторые доступны Облов [число] = '('; addParen (список, leftRem - 1, rightRem, ули подсчитывать + 1);} если (rightRem> leftRem) {// попробовать правый скобка, если есть соответствующий налево ул [число] = ')'; addParen (список, leftRem, rightRem - 1, ул, граф + 1); }}} Государственной статической ArrayList generateParens (количество INT) {обугливается [] Str = новый символ [число * 2]; ArrayList список = новый ArrayList (); addParen (список, граф, граф, ул, 0); вернуться список; } Как я понимаю, идея заключается в том, что мы добавим левые скобки всякий раз, когда это возможно. Для правой скобки, мы добавим его только тогда, когда оставшееся количество правых скобок больше, чем левый. Если бы мы использовали все левые и правые скобки, мы добавим новую комбинацию к результату. Мы можем быть уверены, что не будет дубликат построен строкой. Для меня это рекурсии, это как, когда мы работаем с деревом, например, и мы делаем предварительным заказ обход, например: мы идем в левый узел каждый раз, когда возможно, если бы мы не идти прямо, а затем мы стараемся идти налево только после этого шага. Если мы не можем, мы «вернуться» и идите направо и мы повторим обход. На мой взгляд, это точно такая же идея здесь. Так, по наивности, я думал, что временная сложность будет что-то вроде O (журнал (п)), O (n.log (п)) или что-то подобное с логарифмом. Но, когда я пытался найти о том, что я нашел то, что называется «количество Каталонский», который мы можем использовать для подсчета количества комбинации скобок .... (https://anonymouscoders.wordpress.com/2015/07 / 20 / его-все-о-каталанский /) Какова время сложность по вашему мнению? Можно ли применить теорему мастера здесь или нет? когда я пытался найти о том, что я нашел то, что называется «количество Каталонский», который мы можем использовать для подсчета количества комбинации скобок .... (https://anonymouscoders.wordpress.com/2015/07/20 / его-все-о-каталанский /) Каково время сложность по вашему мнению? Можно ли применить теорему мастера здесь или нет? когда я пытался найти о том, что я нашел то, что называется «количество Каталонский», который мы можем использовать для подсчета количества комбинации скобок .... (https://anonymouscoders.wordpress.com/2015/07/20 / его-все-о-каталанский /) Каково время сложность по вашему мнению? Можно ли применить теорему мастера здесь или нет?
salamanka44
5

голосов
1

ответ
138

Просмотры

Количество различной комбинации возможно?

У вас есть несколько мест, где, как м и количество цифр, п. Вы должны заполнить эти места м таким образом, что каждая цифра появляется по крайней мере один раз. Например Учитывая м, как 4 и п, как 3, так у вас есть 4 места и 3 цифры. В настоящее время для этого общего возможного количества комбинаций 36. Давайте возьмем простой пример: т = 3 и п = 2 (а, б), то предположим, что возможные комбинации ABA AAB АВВ ЬаЬ BBA Таким образом, бе 6 комбинаций возможны только. Есть ли формула для этого, потому что я должен найти возможное число комбинаций?
heema
14

голосов
7

ответ
52.3k

Просмотры

Умный способ генерировать перестановки и комбинации строки

Строка базы данных [] = { 'а', 'б', 'с'}; Я хотел бы, чтобы генерировать следующие строки последовательность, основанную на данной базе данных. а б с ÄÂ Ab Ac ба бб Ьс ча центибар куб.см ааа ... Я могу думать только о хорошеньком решении «фиктивного». общественного класса JavaApplication21 {/ ** * @param арг аргументы командной строки * / общественности статической силы основных (String [] арг) {сЬаг [] БД = { 'а', 'B', 'C'}; Строка запроса = «а»; StringBuilder query_sb = новый StringBuilder (запрос); для (Int А = 0; а <database.length; A ++) {query_sb.setCharAt (0, базы данных [а]); запрос = query_sb.toString (); System.out.println (запрос); } Запрос = "аа"; query_sb = новый StringBuilder (запрос); для (Int А = 0; а <database.length; A ++) {query_sb.setCharAt (0, базы данных [а]); для (INT б = 0, б <database.length; б ++) {query_sb.setCharAt (1, базы данных [б]); запрос = query_sb.toString (); System.out.println (запрос); }} Запроса = "ааа"; query_sb = новый StringBuilder (запрос); для (Int А = 0; а <database.length; A ++) {query_sb.setCharAt (0, базы данных [а]); для (INT б = 0, б <database.length; б ++) {query_sb.setCharAt (1, базы данных [б]); для (Int с = 0, С <database.length; C ++) {query_sb.setCharAt (2, базы данных [с]); запрос = query_sb.toString (); System.out.println (запрос); }}}}} Решение довольно глупо. Он не масштабируется-состояния в том смысле, что если я увеличить размер базы данных? Что делать, если моя окончательная целевая длину печати строки должна быть N? Есть ли смарт-код, который может генерировать Масштабное возможность перестановки и комбинации строки в очень умный способ?
Cheok Yan Cheng
7

голосов
6

ответ
6.5k

Просмотры

получать все возможные комбинации в списке

Предположим, у меня было что-то вроде этого: L1 = [ «кошка», «собака», «рыба», «кролик», «лошадь», «птица», «лягушка», «мыши» ...] для х в L1: вход1 = открыт ( 'file_% s' % (х), 'г') file1 = pickle.load (вход1) для х в L1: вход2 = открыт ( 'file_% s' % (х), 'г') файл2 = pickle.load (input2), и я хотел бы получить все комбинации файлов без повторяющихся комбинаций, которые уже были сделаны (один раз cat_dog делается не делать dog_cat снова). Есть ли способ, что я мог сделать это? Мой реальный список в алфавитном порядке, если это делает никакой разницы.
marsx
2

голосов
3

ответ
1.1k

Просмотры

Получить все комбинации List (с частичными результатами, тоже) в C #

Мне нужен эффективный алгоритм, чтобы получить все возможные сочетания списка списков целых чисел. Мне нужны частичные результаты, тоже. Пример: {1, 2, 3} {4, 5} {6, 7, 8} мне нужно получить: 1 2 3 1/4 1/5 2/4 2/5 3/4 3/5 1 / 4/6 1/4/7 1/4/8 1/5/6 1/5/7 1/5/8 2/4/6 2/4/7 2/4/8 2/5/6 2 / 5/7 2/5/8 3/4/6 3/4/7 3/4/8 3/5/6 3/5/7 3/5/8 мне это нужно в самом быстром способе, если это возможно. У меня уже есть алгоритм, но я хочу, чтобы выяснить, есть ли лучшие альтернативы. Спасибо. EDIT: Это мой текущий код. К сожалению для итальянских комментариев. // Istanzia уна Lista в contenere ле Liste ди Valori Список allLists = новый список (); ... КОД ДЛЯ ЗАПОЛНЕНИЯ В СПИСКИ ... // Esegue ип Ciclo фино аль-ди-Liste Numero восстановить силы для (Int ListIndex = 0; ListIndex <allLists.Count; ListIndex ++) {// Istanzia уна Lista в contenere ле Liste ди Valori фино алло // Шаг Список Corrente stepLists = новый список (); // Esegue ип Ciclo Sulle Liste фино алло шаг Corrente для (INT stepListIndex = 0; stepListIndex 0) {// Recupera ла прима Lista список List = (список) списки [0]; // Se è rimasta соло уна Lista если (lists.Count == 1) {// Esegue ип Ciclo су тутти я Valori Еогеаспа (целое значение в списке) {// Aggiunge ип risultato кон Радич е Valore results.Add (новый список (корень) {значение}); }} Еще {// Esegue ип Ciclo су ОГНИ Valore делла lišta Еогеасп (INT значение в списке) {// Aggiunge аи risultati ла prosecuzione дель Prodotto // vettoriale Далла Lista successiva results.AddRange (векторное произведение (lists.GetRange (1, списки .Count - 1), новый список (корень) {значение})); }}} Возвращать результаты; }
Alessandro
2

голосов
2

ответ
99

Просмотры

How to “iterate” over this set

Здравствуйте у меня есть некоторые данные А -> .... (точки п данных). Теперь я беру из этих данных, заданное число значений (т) - и теперь я хочу, чтобы перебрать все уникальные комбинации этих значений. Пример 5 значений, где вы принимаете 2 уникальными: Уникальное сочетание будет что-то вроде «а + б» или «А + С» - однако «с + d» таким же, как «Ъ + с». А «В + Е» такое же, как «A + D» A B хххх ххх C хх хх D Е х Те описывают некоторые геометрические «линии», и весь образец может быть «зеркальным» вокруг средней точки. Таким образом, для произвольного числа строк, есть умный алгоритм перебора все это с учетом «Зеркальной» ? И то, что формула для вычисления количества элементов данных заданного размера п и число элементов, м? ---- пример с «3 из 6»: Он также имеет близкое сходство функции комбинат (6,3) - однако теперь я отметил повторяющиеся строки с - вместо й. 1 1 1 1 1 1 1 1 1 1 2 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 А XXXXXXXX - - А.Б. XXXXXX - - - - БК XXXXXX - - - - CD-ххх - х - - - - - DE ххх - х - - - - - EF хх - - - - - - - - - F Так возможно список будет: ABC, ABD, ABE, ABF, ACD, ACE, ACF, ADE, BCD , BCE 10 из 20 потенциальных кандидатов проигнорировав Symetry. 3) - однако теперь я отметил повторяющиеся строки с - вместо й. 1 1 1 1 1 1 1 1 1 1 2 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 А XXXXXXXX - - А.Б. XXXXXX - - - - БК XXXXXX - - - - CD-ххх - х - - - - - DE ххх - х - - - - - EF хх - - - - - - - - - F Так возможно список будет: ABC, ABD, ABE, ABF, ACD, ACE, ACF, ADE, BCD , BCE 10 из 20 потенциальных кандидатов проигнорировав Symetry. 3) - однако теперь я отметил повторяющиеся строки с - вместо й. 1 1 1 1 1 1 1 1 1 1 2 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 А XXXXXXXX - - А.Б. XXXXXX - - - - БК XXXXXX - - - - CD-ххх - х - - - - - DE ххх - х - - - - - EF хх - - - - - - - - - F Так возможно список будет: ABC, ABD, ABE, ABF, ACD, ACE, ACF, ADE, BCD , BCE 10 из 20 потенциальных кандидатов проигнорировав Symetry.
paul23
5

голосов
1

ответ
355

Просмотры

Алгоритм создание уникальной случайной конкатенации элементов

Я думаю об алгоритме, который будет создавать X наиболее уникальных конкатенации Y частей, где каждая часть может быть один из нескольких пунктов. Например 3-х частей: часть # 1: 0,1,2 часть # 2: а, б, в часть # 3: х, у, г А (случайным образом, один случай некоторых возможностей) результат 5 сочленениях: 0ax 1by 2cz 0bz (обратите внимание, что «0by» будет «менее уникальным», чем «0bz», поскольку «на» уже был) 2AY (обратите внимание, что «а» не после того, как «2» струи, а «у» не после того, как ' а»струи) Простые BAD результаты для следующего конкатенации: 1cy („с“не было после того, как 1,„у“не было после того, как„с“, НО„1“-„у“уже был первый-последний Simple ХОРОШО рядом результат будет выглядеть так: 0cy ( «с» не было после того, как «0», «у» не было после того, как «с», и «0» - «у» не был первым, последняя часть) 1AZ 1CX Я знаю, что это предельное решение возможных результатов, но когда все полные уникальные возможности будут исчезли, алгоритм должен продолжать и стараться сохранить большую Avaible уникальность (повторяющейся как можно). Рассмотрим реальный пример: мальчик / девочка / Мартин купил / украл / получить бутылку / молоко / вода И я хочу такие результаты: Мальчик получить молоко Мартин украл бутылку Девочка купил воды Мальчик купил бутылку (а не воду, из-за «купил + вода», а не молоко, из-за «Мальчик + молоко») Может быть, начать с деревом всех комбинаций, но как выбрать самые уникальные деревья в первую очередь? Edit: Согласно этой выборке данных, мы можем видеть, что создание полностью уникальных результатов для 4 слов * 3 возможности, предоставить нам только 3 результатов: Мартин украл Бутл Мальчик купил молоко Он получит жесткую воду Но, может быть больше результатов просил. Так, 4. Результат должен быть наиболее доступной, уникальность, как Мартин купила жесткое молоко, а не Мартин украдкой воду Edit: Некоторые старты для решения? Представьте себе каждую деталь, как ствол, которым можно вращать, и последний пункт идет как первым, когда вращается вниз, сначала идет в последний раз при повороте вверх. Теперь установите barells так: Martin | украла | | Бутл Boy | купил | | молоко Он | получить | тяжело | воды Теперь, писать предложения, как мы видим, и вращать первый barell UP один раз, второй два раза, третий три и так на. Мы получаем предложения (обратите внимание, что третий barell сделал один полный оборот): Boy | получить | | молоко Он | украл | | воду Martin | купило | трудно | Бутли И мы получаем следующие решения. Мы можем сделать процесс еще раз, чтобы получить больше решений: Он | купил | | воды Martin | получить | | Бутл Boy | воровал | трудно | молоко Проблема в том, что первая бочка будет связана с последним, потому вращающиеся параллельно. Я интересно, если это будет больше, если я стоимость создания эксклюзивным повернуть прошлый Баррель еще раз в последнем растворе (но я обеспечиваю другие соединения, как в воду, - но это будет повторяться только 2 раза, а не в 3 раза, как сейчас). Не знаю, что «бочки» являются хорошим способом ofthinking здесь. Я думаю, что мы должны сначала нашли определение для уникальности, например, то, что меняется уникальность падения? Если мы используем слово, которое уже было использовано? У повторив 2 слов близко друг к другу меньше, что повторение стоимости создания эксклюзивное слова в некотором промежутке других слов? Таким образом, эта проблема может быть субъективной. Но я думаю, что в партии последовательностей, каждое слово должно быть использовано аналогичные раз (например, при выборе слова в случайном порядке и удаления из набора, и после получения всех слов обновить все варианты, которые они могут быть получены в следующий раз) - это легко сделать. Но, даже если мы получаем каждый из слов подобных времен числа О.Д., мы должны делать что-то делать-не-повторять-соединение между словами. Я думаю, что больше повторяет стоимость создания эксклюзивного слово далеко друг от друга, а не рядом друг с другом.
Piotr Müller
6

голосов
6

ответ
6.6k

Просмотры

Выход каждой комбинации из массива чисел с JavaScript

У меня есть несколько чисел в массиве вар numArr = [1, 3, 5, 9]; Я хочу, чтобы перебрать этот массив и умножать каждую уникальную комбинацию 3 номера следующим образом: 1 * 3 * 5 = 1 * 3 * 9 = 1 * 5 * 9 = 3 * 5 * 9 = Тогда возвращает массив всех вычислений вара ansArr = [15,27,45,135]; Кто-нибудь есть элегантное решение? Заранее спасибо.
DaveKingsnorth
4

голосов
2

ответ
643

Просмотры

Вычисление Ncr по модулю р, простое

Я пытаюсь вычислить Ncr по модулю р, где р является простым числом. Один из подходов, я попытался это вычислить п! / (Г! * (Пг)!) По модулю р с помощью мультипликативных инверсий, но это не выполняется, когда либо г или NR больше или равен р, так как тогда факториалы равны нуль по модулю р и обратные не существуют. Какой метод работает во всех случаях, а не только тогда, когда существуют мультипликативные обратные?
Ashwini
3

голосов
1

ответ
291

Просмотры

Как получить K наибольшей суммы комбинации, сделанную из введенных номеров

Вход в моей программе список чисел, отсортированных в порядке возрастания. Что мне нужно, как выход К-самая крупная сумма из комбинаций 3-номер из списка. Так как это может быть немного запутанным, позвольте мне объяснить, на мой алгоритм: Мой список состоит из цифр 1 2 3 4, мне нужно К-самая крупная сумма Предпринять все возможные комбинации в виде списков ([1,2,3], [1,2 , 4], [1,3,4], [2,3,4]) Составьте список, содержащий сумму каждой комбинации ([6], [7], [8], [9]) список Сортировка по убыванию заказ и печать числа в положении K-е Это моя программа в Python, но проблема заключается в том, что он тратит время, делая для многих комбинаций. Иногда у меня есть список, содержащий 3000 номеров, и это занимает слишком много времени, чтобы создать все возможные комбинации. Есть ли какой-нибудь способ, как делать, чтобы избежать всех этих комбинаций? импорт itertools к = вход ( 'Здесь идет K').
detsales70
4

голосов
2

ответ
345

Просмотры

R- Найти Уникальные Перестановки значений

Я надеюсь, чтобы создать все возможные перестановки вектора, содержащего два разных значения, в которых я контролировать долю каждого из значений. Например, если у меня есть вектор длины три, и я хочу, чтобы все возможные комбинации, содержащие один 1, мой желаемый результат список вида: list.1
Sam Zipper
3

голосов
2

ответ
79

Просмотры

Получить все возможные кластеризации в MATLAB

Допустим, у меня есть вектор п = 1: 4. Я хочу создать массив ячеек клеток, содержащих все возможные группировки этих элементов, предполагая, что группировки может быть любого размера, может быть любое число групп, но каждое значение должно присутствовать в каждой конфигурации. Вот пример того, что я хотел бы создать, но без каждой возможности: возможности = {{[1 2 3 4]}, ... {[1 2 3], 4}, ... {[1 2 4], 3}, ... ... {[1 3], [2 4]}, ... ... {[1 3], 2, 4}, ... {1,2,3 , 4}} Таким образом, каждая ячейка в пределах ячейки содержит значение 1: 4, но они могут быть сгруппированы произвольно в группы любого размера. Единственное ограничение состоит в том, что каждый уникальный кластеризации должен появиться только один раз, где {[1 2 3], 4} совпадает с {[2 1 3], 4} и {4, [3 1 2]}. Я думаю, что функция nchoosek может быть полезным, но если честно я»
Nolan Conaway
4

голосов
5

ответ
8.3k

Просмотры

генератор случайного номера лотереи

То, что я пытаюсь сделать, это генерировать 6 случайных чисел, пять в диапазоне 1-45 и один в диапазоне 1-25 для греческой лотереи (Tzoker). Первые 5 номеров должны быть уникальными. При нажатии на кнопку, я хочу, чтобы добавить эти номера в DIV с помощью JQuery (У меня есть рабочий код для этой части). Я думал, что это было бы довольно легко с помощью цикла, но я обнаружил, что не могу проверить, если номер, который генерируется уже существует. Цикл будет содержать только первые 5 чисел, потому что последнее число может быть равно одному из других 5.
kogigr
2

голосов
1

ответ
540

Просмотры

Альтернативы декартовы в Спарк?

У меня есть RDD этого типа: [(1, [3, 10, 11]), (2, [3, 4, 10, 11]), (3, [1, 4]), (4, [2 , 3, 10]) ...] и мне нужна функция, которая следует этому правилу: если ключ й не содержат ключ у (и наоборот) в его ценностной списке, а затем выводит кортеж, имеющий следующий синтаксис: [(х, [у, Len (values_x ^ values_y)]), ...], где Len (values_x ^ values_y) есть число значений общего между двумя ключами. Если это значение равно 0 (т.е. нет значения в общем), просто пропустите эту пару ключей. Например, из приведенного выше образца, вывод должен быть: (1, [2, 3]) # потому, что кнопки 1 и 2, имеют общие значения 3, 10, 11 (1, [4, 2]) #, поскольку клавиши 1 и 4 разделяют значения 3, 10 пропуска: (2, [1, 3]) является обратным (1, [2, 3]), так что он может быть пропущен (2, [3, 1]) #, поскольку клавиши 2 и 3 делит значение 4 ... Пара ключей 1 и 3 (и других подобных случаях) пропускается, потому что ключ 3 включен в список стоимости ключа 1 и наоборот. Решение, которое я реализовал (но мне не нравится вообще), использует декартово функцию, чтобы создать все комбинации между клавишами, а затем отображения и фильтрации для удаления ненужных пар. Есть ли лучшее решение без использования декартова?
f_ficarola
2

голосов
1

ответ
549

Просмотры

Евклидово расстояние между словарными элементами

Я пытаюсь вычислить расстояние евклидовой среди словарных элементов, как показано ниже # / USR / бен / питон импорт itertools из scipy.spatial расстояния импорта четкости Расстояние (данные): для подмножества в itertools.combinations (данные, 2): печать подмножество показывает # Эта кортеж из двух элементов вместо элементов словаря. ДСТ = distance.euclidean (подмножество), если __name__ == "__main__": данные = {} данные [ '1'] = [5, 3, 4, 4, 6] данные [ '2'] = [1, 2, 3, 4, 5] данные [ '3'] = [3, 1, 2, 3, 3] данные [ '4'] = [4, 3, 4, 3, 3] данные [ '5'] = [ 3, 3, 1, 5, 4] Расстояние (данные) проблема в том, что, когда я пытаюсь вычислить комбинацию словарных элементов я получаю то, что я не ожидал, так прокомментировал в коде. Я думаю, что я делаю что-то неправильно с itertools.
gaetano
5

голосов
6

ответ
4.9k

Просмотры

Java: Генератор верно это и ложные комбинации по-х дает число N;

Я привязал, чтобы упростить задачу как можно больше, так что я мог применить его к моему алгоритму. А вот задача для математиков и программистов: Мне нужно создать метод, где я прохожу параметр Int N: публичный недействительным optionality_generator (Int N) {// какие-то петли или рекурсии ... чтобы сделать его пригодным для применения System.out .println ( "текущая комбинация: ..."); } Вывод должен показать все возможные комбинации истинных и ложных х годов. Вот примеры, где N = 1; N = 2; N = 3; N = 4; N = 5, где х = 0 и ложно = истина; Обратите внимание, что пустые строки перерыва как раз для вас, чтобы распознать легче узоры. Будем надеяться, что я включил все возможные комбинации): Комбинация 1: 0 х Комбинация 2: 00 х0 0x хх Сочетание 3: 000 X00 00x 0x0 XX0 0XX XXX Комбинация 4: 0000 X000 0x00 00X0 000x XX00 X0X0 X00X 0XX0 0X0X 00xx xxx0 xx0x x0xx вида 0ХХХ ХХХХ Комбинация 5: 00000 X0000 0x000 00X00 000X0 0000X XX000 X0X00 X00X0 X000X X0X00 X00X0 X000X 0XX00 0X0X0 0X00X 00XX0 00X0X 000XX XXX00 XX0X0 XX00X X0XX0 X0X0X X00XX 0XXX0 0XX0X 00XXX XXXX0 XXX0X XX0XX X0XXX 0xxxx XXXXX Кроме того, если вы видите выход, здесь картина я узнал, что все комбинации перевернуты на половину (например, первая комбинация 00000 последний будет XXXXX, второй один X0000, один перед последним будет 0xxxx так далее..). Может быть, эта модель поможет сделать весь алгоритм более эффективен, не уверен в этом. Заранее спасибо! 00000 X0000 0x000 00X00 000X0 0000X XX000 X0X00 X00X0 X000X X0X00 X00X0 X000X 0XX00 0X0X0 0X00X 00XX0 00X0X 000XX XXX00 XX0X0 XX00X X0XX0 X0X0X X00XX 0XXX0 0XX0X 00XXX XXXX0 XXX0X XX0XX X0XXX 0xxxx XXXXX Кроме того, если вы видите выход, здесь картина я узнал, что все комбинации инвертируются на половине (например, первая комбинация 00000 последних будет ХХХХМ, второй один X0000, один до последнего будет 0xxxx и т.д ..). Может быть, эта модель поможет сделать весь алгоритм более эффективен, не уверен в этом. Заранее спасибо! 00000 X0000 0x000 00X00 000X0 0000X XX000 X0X00 X00X0 X000X X0X00 X00X0 X000X 0XX00 0X0X0 0X00X 00XX0 00X0X 000XX XXX00 XX0X0 XX00X X0XX0 X0X0X X00XX 0XXX0 0XX0X 00XXX XXXX0 XXX0X XX0XX X0XXX 0xxxx XXXXX Кроме того, если вы видите выход, здесь картина я узнал, что все комбинации инвертируются на половине (например, первая комбинация 00000 последних будет ХХХХМ, второй один X0000, один до последнего будет 0xxxx и т.д ..). Может быть, эта модель поможет сделать весь алгоритм более эффективен, не уверен в этом. Заранее спасибо! эта модель поможет сделать весь алгоритм более эффективен, не уверен в этом. Заранее спасибо! эта модель поможет сделать весь алгоритм более эффективен, не уверен в этом. Заранее спасибо!
vvinjj
1

голосов
2

ответ
771

Просмотры

JavaScript - Генерация всех сочетаний массива, учитывая порядок [дубликат]

Этот вопрос уже есть ответ здесь: Перестановки в JavaScript? 26 ответов у меня есть различные массивы, все с номерами, но с разным числом элементов: вар ar1 = [2, 5]; вар Ar2 = [1, 2, 3]; Мне нужно, чтобы получить все комбинации для каждого массива, но рассмотрит порядок элементов. Длина выходных элементов всегда должна быть таким же, как входной массив. Этот результат должен быть массивом массивов, например: для ar1: [2, 5] [5, 2] для ar2: [1, 2, 3] [1, 3, 2] [2, 1, 3] [ 2, 3, 1] [3, 1, 2] [3, 2, 1] Я не хочу, декартово произведение, каждый массив должен быть обработан на своих собственных. Все решения, которые я нашел до сих пор создаются только заказ независимые массивы, поэтому результат для ar1 только один массив, а не два. Решение должно работать для любого числа элементов во входном массиве.
Ulli
5

голосов
4

ответ
3.4k

Просмотры

Найти наиболее частое сочетание значений в data.frame

Я хотел бы, чтобы найти наиболее частое сочетание значений в data.frame. Вот некоторые примеры данных: Дат
Rob
2

голосов
3

ответ
490

Просмотры

Проблема Балансировка галька

Я наткнулся на эту проблему, прежде чем, это проблема балансировки. Программа принимает массив целых чисел размера п. Затем программа определяет, если этот массив целых чисел может быть разделена на 2 равные части, с суммами целых чисел в каждой половине равны. ех. 1 2 3 8 10 4, в котором, программа возвращает истину, то есть он может быть разделен на две половины с 14 в каждом я знаю, что это касается комбинаций / перестановок, и я на самом деле не очень хорошо на них. Я сумел только думать о методе грубой силы. Может ли это быть решена с помощью любых других методов? более эффективные алгоритмы, может быть? Шаг за шагом решение будет очень полезно. большое спасибо
gerky
1

голосов
2

ответ
394

Просмотры

используя itertools для уменьшения сложности четыре «для» STMT?

У меня есть список 4 списков: песни1, песни2, песни3, песни4 = диапазон (0,4), диапазон (4,9), диапазон (8,15), диапазон (2,16) # просто используя диапазон () генерирует данные выборки Я могу перечислить все комбинации элементов по последовательности list1_item, list2_item, list3_item, list4_item через ниже код: для item1 в list1: для item2 в list2: для ITEM3 в List3: для Item4 в песни4: печать [item1, item2, item3, item4] могу ли я узнать, могу ли я сделать эту работу с помощью модуля itertools? Спасибо
user478514
4

голосов
2

ответ
3.9k

Просмотры

генерировать все комбинации элементов в векторе 2d [дублировать]

Можно создать дубликат: Как создать декартово произведение вектора векторов? У меня возникли некоторые логические проблемы, выяснить, как генерировать все комбинации элементов в 2d вектора. Здесь я создаю 2D вектор. Размер Ни один Dimension можно предположить. # include # include с помощью патезраса; INT основных () {srand (время (NULL)); вектор <вектор> массив; // Это создает следующее: // массив [0]: {0, 1, 2} // массив [1]: {3, 4, 5, 9} // массив [2]: {6, 7, 8 } для (INT I = 0; я
gnychis
4

голосов
1

ответ
544

Просмотры

Комбинаторные итератора как expand.grid

Есть ли быстрый способ для перебора комбинаций, как возвращаемые expand.grid или CJ (data.table). Они получают слишком большими, чтобы поместиться в памяти, когда имеется достаточное количество комбинаций. Существует iproduct в itertools2 библиотеке (порт itertools Python), но это очень медленно (по крайней мере так, как я использую его - как показано ниже). Существуют ли другие варианты? Ниже приведен пример, в котором идея состоит в том, чтобы применить функцию для каждой комбинации строк из двух data.frames (предыдущий пост). библиотека (data.table) # CJ библиотека (itertools2) библиотека # iproduct итератора (doParallel) ## Размеры Dim1 два данных
jenesaisquoi