大大,120个字符的怎么全排列啊?
我试过了递归,但是机器受不了这么大的数字。。
我的过程是这样的:
1、将需要进行排序的行数找出来,例如有120行。
2、定义一个相同数量的数组,使用chr(-20226-行数)给每数组内每一个元素赋值一个汉字字符,一个汉字对应一行(只有汉字有这么多的不重复字符)
3,将这个数组进行递归全排列。
4,将每一个排序中汉字对应的行的内容进行切换时间的计算,这个有其他函数搞定。
5,得到切换时间最小的那个料号序列。
在行数小于10左右,就是10行料号的情况下,是可以的。
但是120个料号的全排列做不到。。也就是进行到第三部就死机了。
所以有没有交换字符的排列法?
这样我就可以拍一个算一个,直至算完,也不会因为一次性算120!那么大的数组而崩溃。
大致的思路就是:
1、找到不为空的行,例如120行。
2、定义一个相同数量的数组,使用chr(-20226-行数)进行赋值,每个元素一个汉字字符
3、进行第一次排列
4、查找第一次排序的汉字顺序和对应的行,再调用其他函数进行切换时间的计算
5、与上次排列的切换时间进行对比,并取小值
6、进行下一次排序和进行比较
。。。。
7、得到最小切换时间的汉字序列,找到与之对应的行的排序。
我看了网上的非递归算法都是比较数字大小,但是汉字怎么用交换的排序?
[此贴子已经被作者于2016/7/8 22:19:40编辑过]