Что-то вроде комбинаторики

Есть такая задача: имеются 2 последовательности (возможно разной длины, не меньше 1). Во вторую закинули элементы первой (возможно не все), перемешав их. Нужно определить, можно ли заново из второй последовательности собрать первую. Допускается, что во вторую могли подкинуть лишние элементы. Примеры: 1 2 3 4 и 3 2 1 Можно пересобрать, только одним способом. 1 2 1 и 2 1 1 Можно, но разными способами, так как неизвестно, на каком месте стояла каждая единица. 1 2 1 и 1 2 3 Нельзя, так как тройки не было в первой. 1 2 3 и 1 2 2 Нельзя, так как в первой была одна двойка, а во второй их две. Может есть математические формулы для такого?


Ответы (1 шт):

Автор решения: Harry

Давайте уберем первую часть — о перемешивании, и задача сразу станет простой: можно ли из элементов первого множества А собрать второе множество В. Т.е. математическая — является ли второе множество подмножеством первого.

Формула, собственно — верно ли соотношение
введите сюда описание изображения

Реализация на С++ — с использованием стандартной библиотечной функции includes.

Комбинаторика тут в полной мере ни при чем...

→ Ссылка