1

我正在为棋盘游戏开发概率分析程序。作为算法的一部分*我需要计算一个数字的分区的可能排列(加上一些填充),以便所有分区组件不能占据任何低于排列总长度的位置,以数字为单位,减去值的组件。

(然而,被分割的数字极不可能超过 8,并且排列的长度永远不会超过 7。)


例如,假设我有 4 的分区,“211”,我想在填充为 2 时找到排列,即长度为 5:

0 1 2 3 4 (array indexes)

5 4 3 2 1 (maximum value of partition component that can be allocated to each index)

2 1 1 _ _ (the partition plus 2 empty indexes)

这表示为像这样的数组 {2,1,1,0,0}

当 2 在 0 索引中时有 6 个排列(4!/2!2!),并且 2 可以占用 4 个索引(2 不能放在最后一个索引中)所以这种情况下总共有 24 个排列( a 1 可以占用任何索引)。

输入“21100”的输出:

21100、21010、21001、20110、20101、20011

02110、02101、02011、12100、12010、12001

00211、10210、11200、10201、01210、01201

10021、01021、00121、11020、10120 01120

请注意,这只是“21100”的所有排列减去 2 在第 4 个索引中的排列的集合。这是一个比较简单的案例。


该问题可以描述为组合n个不同的排列组,因为上述情况可以表示为x=1 n=4和x=2 n=5的排列组合,其中x是值计数,n是“空间”计数。

我的困难是制定一种可以通过计算获得所有可能性的方法,任何建议都将不胜感激。-请原谅我的问题中的术语混乱。


*算法回答以下问题:

有一组n 个单位被攻击k次。每次攻击都有p次失败的机会和q (1 - p ) 次攻击组中的一个随机单位的机会。第二次损坏的单位将被摧毁并从集合中移除。

攻击后有x 个未损坏单位、y个损坏单位和z个被摧毁单位的概率是 多少?

如果有人知道解决此问题的更直接方法,请告诉我。

4

1 回答 1

0

我将使用该算法来生成多集的所有排列,如该问题的答案中所给出

如何生成多重集的所有排列?

然后过滤以符合我的标准。

于 2015-03-23T16:19:22.667 回答