Поиск всех возможных способов обмена картами

Я работаю над приложением PHP, которое находит все возможные способы обмена картами. у каждого пользователя есть хотя бы одна карта. Когда пользователь запрашивает карту, приложение показывает ему все возможные способы поменять свою карту на карту, которую он запросил.

Допустим, что:

user 1 has card type A
user 2 has card type B 
user 3 has card type C 

И предположим, что:

user 1 wants card type C
user 2 wants card type A
user 3 wants card type B

Если пользователь 1 запрашивает карту C, единственное решение:

user 1 gives user 2 his card
user 2 gives user 3 his card
user 3 gives user 1 his card

Но что, если бы были два других пользователя:

user 4 has card type B & wants card type A
user 5 has card type C & wants card type B

Теперь, если пользователь 1 запрашивает карту C, есть еще одно решение помимо указанного выше, а именно:

user 1 gives user 4 his card
user 4 gives user 5 his card
user 5 gives user 1 his card

Будет НЕТ ограничений на количество карт, которые пользователь может иметь или запрашивать. Пока что я создал две таблицы SQL. Таблица «карты» отслеживает каждый идентификатор пользователя и идентификатор карты. Таблица «запросы» отслеживает каждый идентификатор пользователя и желаемый идентификатор карты.

5
задан Эџad Дьdulяңмaи 3 December 2010 в 01:53
поделиться