2004年08月13日 星期五 11:51
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),但应该可以 提高程序速度吧。
Zeuux © 2025
京ICP备05028076号