Algorithm 子序列的概率计算与算法

Algorithm 子序列的概率计算与算法,algorithm,sorting,probability,sequences,Algorithm,Sorting,Probability,Sequences,这是一个游戏,其中卡1-50分发给两名玩家,每人有10张随机排列的卡。目的是对所有的牌进行排序,谁先排序谁就是赢家。每次一个人可以从牌组中取出卡,他必须更换现有卡。玩家不能交换他的牌。i、 只有他才能用牌组中的牌替换他的牌。一张被丢弃的牌将以随机顺序返回牌组。现在我需要写一个程序来有效地完成这项工作 我想到了下面的解决办法 1) 在给定的一组卡片中查找所有按升序排列的子序列 2) 对于每个子序列,根据没有解决问题的方法的概率计算权重。 例如:如果我在索引2,3,4处有一个子序列48,49,50,

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

我想到了下面的解决办法 1) 在给定的一组卡片中查找所有按升序排列的子序列 2) 对于每个子序列,根据没有解决问题的方法的概率计算权重。 例如:如果我在索引2,3,4处有一个子序列48,49,50,那么用这个子序列完成问题的概率是0。所以权重乘以0。 同样地,如果我在索引3,4,5处有一个序列18,20,30,那么完成游戏的可能方法中没有一种是为6-10选择20张可能的牌,为前2个位置选择17张可能的牌, 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)

请澄清:(1)玩家在选择替换的牌之前是从牌组中看到牌,还是必须先扔掉牌,然后再获得新牌?(2) 他是否看到其他玩家的牌(他扔掉或得到的牌)?(3)你是否想知道哪些卡片在甲板上?这不能进入无限循环吗?不,我敢肯定这很快收敛。我的算法将问题转化为一个具有拟线性预期时间的问题。它过于简单,因为它不试图利用最初的手,但我怀疑,如果你这样做,只能获得微小的改进。