求高效快速的排列组合方法
时间:2011-04-19
来源:互联网
前不久碰到一个关于排列组合方面的问题,大意如下:
由包含a,b,c,d....x,y,z这26个字母组成的随机字母序列: d,e,g,c,a,d,e,h,h,j,y,c,a,d,e,h,o,z,d,p,l.....
希望求得6组字母的组合集,每组5个字母,使得上述字母序列中任意6个连续的字母至少有一个在字母组合集中,顺序需和组合集相同。 序列中任意6个连续的字母就像一条路径,要从组合集穿过,但不让它穿过,也就是能至少匹配到一个/
例如:字母的组合集为
1. g,r,e,h,a
2. l,d,t,w,b
3. p,o,y,v,c
4. c,k,f,d,y
5. u,h,d,s,h
6. a,x,n,v,g
去匹配序列中第一个子序列:d,e,g,c,a,d,则第四组c能匹配 具体如下
d,e,g,c,a,d按顺序在6组结果中找,即
d in( g,r,e,h,a )? =>false
e in(l,d,t,w,b)? =>false
g in(p,o,y,v,c )? =>false
c in(c,k,f,d,y)? =>true 到这里就成功了,后面两个a,d可以不看了
然后下一组子序列e,g,c,a,d,e,也就是指针从序列的第一个位置加1,指向第2个,再从指针位置往后取6个字母形成新的子序列,再匹配:
e in( g,r,e,h,a )? =>true ,后面5个可以不管了
继续下一组子序列....
但后面会发现子序列[d,e,h,h,j,y]没有一组能在相应位置与之匹配,所以,这6组结果的组合不是问题最终的解
求高手指点高效的算法
由包含a,b,c,d....x,y,z这26个字母组成的随机字母序列: d,e,g,c,a,d,e,h,h,j,y,c,a,d,e,h,o,z,d,p,l.....
希望求得6组字母的组合集,每组5个字母,使得上述字母序列中任意6个连续的字母至少有一个在字母组合集中,顺序需和组合集相同。 序列中任意6个连续的字母就像一条路径,要从组合集穿过,但不让它穿过,也就是能至少匹配到一个/
例如:字母的组合集为
1. g,r,e,h,a
2. l,d,t,w,b
3. p,o,y,v,c
4. c,k,f,d,y
5. u,h,d,s,h
6. a,x,n,v,g
去匹配序列中第一个子序列:d,e,g,c,a,d,则第四组c能匹配 具体如下
d,e,g,c,a,d按顺序在6组结果中找,即
d in( g,r,e,h,a )? =>false
e in(l,d,t,w,b)? =>false
g in(p,o,y,v,c )? =>false
c in(c,k,f,d,y)? =>true 到这里就成功了,后面两个a,d可以不看了
然后下一组子序列e,g,c,a,d,e,也就是指针从序列的第一个位置加1,指向第2个,再从指针位置往后取6个字母形成新的子序列,再匹配:
e in( g,r,e,h,a )? =>true ,后面5个可以不管了
继续下一组子序列....
但后面会发现子序列[d,e,h,h,j,y]没有一组能在相应位置与之匹配,所以,这6组结果的组合不是问题最终的解
求高手指点高效的算法
作者: zhang87224088 发布时间: 2011-04-19
没人理我...5555
作者: zhang87224088 发布时间: 2011-04-22
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28