好的,我已经浏览了一下,我已经找到了解决这个问题的C或python解决方案.我更喜欢python ...虽然它是我较弱的语言(2种非常弱的语言).
一组数字,例如0 0 1 7 0 0 3 0 0 4
找到集合的所有排列.
数字> 0必须保持该顺序(不是位置!)
数字之间必须有0,但在集合的开头和结尾不需要0.只要数字> 0之间至少有一个0.
首先,我想到找到所有可能的排列然后去除每个排列的箔条(检查n> 0,!n + 1> 0),然后第一个数字> 0 == 1,第二个#> 0 = = 7等
然后我停下来,认为这是愚蠢的,说有12个数字,这将给12!排列.这是500,000,000排列的顺序,我将不得不再次通过以摆脱箔条.
假设我有40到50套这些数字套装可以通过,这是一个公平的时间.
有更合乎逻辑的方式吗?我想到某种方式让python做排列以某种方式考虑这些规则(如果n> 0,n + 1必须== 0)和(n =第一个数字,n2 =第2个等)
一个较小的集合的例子是(不是所有的PERMUTATIONS,但给出了想法):
1,2,3,0,0,0,0,0
1,0,2,0,3,0,0,0
0,1,0,2,0,3,0,0
0,0,1,0,2,0,3,0
0,0,1,0,0,2,0,3
0,1,0,0,2,0,3,0
所以1,2,3是有序的,但是"0"只是左右移动了?
谢谢!