首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

求出所有可能出现的数组,该如何处理

2012-06-12 
求出所有可能出现的数组从1到100之中 以6位为一组求出所有可能出现的数组(数组当中的数值不重复)比如:1、2、

求出所有可能出现的数组
从1到100之中 以6位为一组 求出所有可能出现的数组(数组当中的数值不重复)

比如:
1、2、3、4、5、6
1、3、4、5、6、7
1、4、5、6、7、8
......
一直到 95、96、97、98、99、100

[解决办法]
算错了。是 1192052400 种组合。

算法很简单:

1 建立一个空的字典;

2 生成 6 个不重复的 1 至 100 的随机数;

3 查找字典中是否存在此组合,如不存在,则添加到字典;

4 重复 2 至 3 步,直至字典容量达到 1192052400。
[解决办法]
想做序列号? 那就用排列,即1-100任取6个的排列,排列是有顺序的;而组合不考虑顺序,比如123456和654321在组合里面只能算一个。
做序列号不能只用数字,要部分数字和部分字母组合使用,这是相对安全的。微软的序列号用的是25位字符,即密码学里面的椭圆曲线法生成。这25个字符实际是将114位的数据用Base24进行UUCode后的结果,UUCode的Base共24位:BCDFGHJKMPQRTVWXY2346789作为基本字符。

热点排行