Python论坛  - 讨论区

标题:=?GB2312?Q?Re: Re: [python-chinese]=D7=E9=BA=CF=C9=FA=B3=C9=CB=E3=B7=A8=A3=A1?=

2004年08月13日 星期五 11:57

Xie Yanbo idkey at 163.com
Fri Aug 13 11:57:42 HKT 2004

On 2004-08-13 11:20:1092367210 +0800, guochen wrote:
> Xie Yanbo,您好!
> 
> 	N字母中M个全排的情况要复杂的多
> 首先是N中选M
> 然后是M全排
> 即使时间和结果数正比
> 但是结果数随M和N的变化可大了去了

那也总比 N! 的结果数要少吧。没办法,阶乘就是一个陡峭上升的曲线,
你总不能要求算法的效率随着结果数越多越好吧?



[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2004年08月13日 星期五 11:59

limodou chatme at 263.net
Fri Aug 13 11:59:01 HKT 2004

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


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号