2004年08月13日 星期五 11:57
On 2004-08-13 11:20:1092367210 +0800, guochen wrote: > Xie Yanbo,您好! > > N字母中M个全排的情况要复杂的多 > 首先是N中选M > 然后是M全排 > 即使时间和结果数正比 > 但是结果数随M和N的变化可大了去了 那也总比 N! 的结果数要少吧。没办法,阶乘就是一个陡峭上升的曲线, 你总不能要求算法的效率随着结果数越多越好吧?
2004年08月13日 星期五 11:59
Xie Yanbo,您好! 可以考虑现在的sets(2.4以后就内置了)来实现。它是集合,因此无法重复。可能比list要简单。 ======= 2004-08-13 11:51:42 您在来信中写道:======= >On 2004-08-13 11:27:1092367626 +0800, 王君 wrote: >> Xie Yanbo,您好! >> >> 你说的N字母N组合的程序,我觉得你是不是弄错了,N字母N组合只有一种组合,你说的每次交换2个字母的位置,这个方法似乎是用来做排列的吧・!我这里说的是列举所有的组合情况。 > >哦,你是在说组合,才反应过来 ^_^ > >这样,你把 N 个字母组成一个 list,那么它的所有组合形式也就是这个 >list 的 index 的 0-1 排列。具体操作上来看,你可以制作一个 len=N >的 list,先令所有项为 0,然后把其中任意 M 个项设为 1,然后在这个 >index list 上作排列── swap 操作要有点小修改,只对调值不同的项, >同为 0 或 1 的则直接跳过──每次交换后把 index list 中是 1 的 >对应输出字母 list 中的值。这个方法虽然不能做到 O(N),但应该可以 >提高程序速度吧。 > >_______________________________________________ >python-chinese list >python-chinese at lists.python.cn >http://python.cn/mailman/listinfo/python-chinese > = = = = = = = = = = = = = = = = = = = = 致 礼! limodou chatme at 263.net 2004-08-13
Zeuux © 2025
京ICP备05028076号