algorithm - 子序列的概率计算和算法

标签 algorithm sorting probability sequences

这是一个游戏,其中 1-50 张牌被分配给两名玩家,每人有 10 张牌,顺序是随机的。目的是对所有卡片进行排序,谁先完成谁就是赢家。每次一个人可以从牌组中拿起卡片时,他必须更换现有的卡片。玩家不能交换他的牌。即只有他可以用牌组中的牌替换他的牌。丢弃的牌将以随机顺序返回牌组。现在我需要编写一个程序来高效地完成这项工作。

我想到了以下解决方案 1) 在给定的一组卡片中找到所有按升序排列的子序列 2)对于每个子序列,根据可以解决问题的方法数量的概率计算权重。 例如:如果我在索引 2,3,4 处有一个子序列 48,49,50,用这个子序列完成问题的概率是 0。所以权重乘以 0。 同样,如果我在索引 3、4、5 处有一个序列 18、20、30,那么完成游戏的任何可能方式都是 20 张可能的卡片可供选择 6-10 和 17 张可能的卡片可供选择前 2 个位置, 3) 对于牌组中的每张牌,我将扫描列表并重新计算子序列的权重以找到更合适的。

嗯,这个解决方案可能有很多缺陷,但我想知道 1)给定一个子序列,如何找到完成游戏的可能方式的概率? 2) 找到所有子序列的最佳算法是什么?

最佳答案

所以如果我理解正确的话,目标是通过交换尽可能少的牌来获得一手有序的牌,对吧?您是否尝试过以下方法?它非常简单,但我猜它的性能相当不错。

N=50
I=10
while hand is not ordered:
   get a card from the deck
   v = value of the card
   put card in position round(v/N*I)

关于algorithm - 子序列的概率计算和算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7518818/

相关文章:

python - 词表生成(排序、优化)

python - 如何在Python中实现快速排序

r - 如何确定包含简并子串的字母的可能组合数

javascript - 在循环中创建一个深度(水平)对象

sorting - grails:在域类中测试 'sort' 映射

r - 概率计算

machine-learning - 预测概率

algorithm - 查找给定的总和是否存在于 BST 中的一条路径上

具有双元素的 Python itertools 排列

c# - SVD算法实现