php - 循环匹配。 PHP/MySql

标签 php mysql

您好,我需要一些有关 php 中以下场景的帮助。我有一个用户数据库,每个用户都有一个 ID、have_card 和 want_card。我知道如何进行直接匹配(一个用户与另一个用户交易)。但是如果没有直接匹配但是有循环交换,比如:

用户#1 有卡 A 想要卡 B

用户#2 有卡 B 想要卡 C

用户#3 有卡 C 想要卡 A

在这种情况下,两个用户之间没有直接匹配。但是如果:

用户 #1 将他的卡交给用户 #3

用户 #3 将他的卡交给用户 #2

用户 #2 将他的卡交给用户 #1

每个人都很开心。

我必须从用户 #1 开始的所有信息如何找到用户 #2 和用户 #3?

感谢大家的回答。

最佳答案

有趣的是,我遇到了与 BoardGameGeek Maths Trade 类似的事情.基本上,每个人都指定他们想要游戏或拥有游戏,算法会最大化交易,包括循环依赖。

这正是您想要的。

这是一个 explanation of how TradeMaximizer works .它使用 Dijkstra's algorithmskew heaps找到最小匹配解决方案(即较小的圆比较大的圆更可取)。

虽然这是用 Java 创建的,但算法是通用的,您可以根据需要重新创建它,尤其是在您了解它的作用和原因之后。

关于php - 循环匹配。 PHP/MySql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/385052/

相关文章:

重定向到 install.php 的 PHP 脚本

mysql - MYSQL 中的 COUNT 查询

php - 注意 : Undefined variable: csvFile inon line 160 , 警告 : fclose() expects parameter 1 to be resource, 第 160 行给出 null

javascript - TypeError : image. elevateZoom is not a function : Failure in Magento 1. 9 RWD 主题

javascript - 在页面导航时更改 SQL 语句

php - 我工作正常的 PHP 脚本不再工作了

mysql - 返回数据库中的第 N 个单词

php - 帮助理解 php 链接

php - MySQL PHP : Return rows based on a column

mysql - 带有 INNER JOIN 和子查询的 WHERE 子句