Foxtable(狐表)用户栏目专家坐堂 → 还是全排列问题


  共有1876人关注过本帖平板打印复制链接

主题:还是全排列问题

帅哥哟,离线,有人找我吗?
lur320
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:983 积分:8628 威望:0 精华:0 注册:2015/8/12 16:28:00
还是全排列问题  发帖心情 Post By:2016/7/8 22:13:00 [只看该作者]

大大,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编辑过]

 回到顶部