我正在为棋盘游戏开发概率分析程序。作为算法的一部分*我需要计算一个数字的分区的可能排列(加上一些填充),这样所有分区组件都不能占用任何低于排列总长度的位置,以数字为单位减去值组件。
(但是,分割的数字不太可能高于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!),并且有4个索引可以占用2个(2个不能放入最后一个索引)所以总共有24个排列这种情况(1可以占据任何指数)。
输入“21100”的输出:
21100,21010,21001,20110,20101,20011
02110,02101,02011,12100,12010,12001
00211,10210,11200,10201,01210,01201
10021,01021,6121,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 攻击后销毁单位?
如果有人知道更直接的方法解决这个问题,请告诉我。
答案 0 :(得分:0)