小 小天 Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-31 #1 看到一道题: 求n的全排列(如n=123,则打印123,132,213.......) 要求不用递归,算法尽量简单
A Another_eYes Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-31 #3 不用递归就用循环呗. 两层循环应该够用了.
W wjiachun Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-31 #5 嘿嘿,如果连续排的话你这个 n>=10 就难看极了 n=9时 ,n!=9*8*7*6*5*4*3*2*1=362800 种了 不用递归就用循环了,简单不了 :-(
W wjiachun Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-31 #9 小天:给你一个思路,代码我懒得写了 比如123456789这9个数(n也一样),把他们放在数组里,如何得到全排列呢? 这是第一个了,然后依次把1放到第2位,第3位..., 一轮完毕,把2放到第3位,第4位... ... 一直到把8放到第9位。 其实就是把第i个数(n>i)由第i位从i+1滚动到第n位的过程。
小天:给你一个思路,代码我懒得写了 比如123456789这9个数(n也一样),把他们放在数组里,如何得到全排列呢? 这是第一个了,然后依次把1放到第2位,第3位..., 一轮完毕,把2放到第3位,第4位... ... 一直到把8放到第9位。 其实就是把第i个数(n>i)由第i位从i+1滚动到第n位的过程。
F freesweet Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-31 #10 转换成string用copy一个一个取出来循环
C Chenlili Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-31 #11 可以用goto语句和数组模拟递归,不过程序会很难看
B Button1 Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-31 #12 简单,n位数字中随机取两位交换位置,若结果未出现过,就添至结果集。 结果集最好是存为一个文件。 先得计算这个数字的全排列个数作为循环结束标志, 应考虑到数字相同的情况,如122的个数为3,而不是3!。 此谓精确遗传算法。
简单,n位数字中随机取两位交换位置,若结果未出现过,就添至结果集。 结果集最好是存为一个文件。 先得计算这个数字的全排列个数作为循环结束标志, 应考虑到数字相同的情况,如122的个数为3,而不是3!。 此谓精确遗传算法。
小 小天 Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-31 #13 wjiachun:你的办法只有N*N结果,而全排列应该有N!,所以不对 Button1:那们的话执行效率太低了 zwhc:我说了,这只是一道题,我也知道用递归方便
Y yorkshi Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-31 #15 设n为m位数, 取出这m个数字. 然后写一个m重循环, 只有在各个循环指标互不相同时才 把这几个数字组合成为一个数. 循环结束后, 所有的排列也出来了. 具体细节由你考虑吧.
荒 荒木 Unregistered / Unconfirmed GUEST, unregistred user! 2000-09-01 #18 例如:5678 astring:=inttostr(5678) for i:=1 to 10000 do begin 1。分解出i 由几个字符组成。 2。求出这几个字符在astring中的位置(如不在position为“0”) 3。若几个字符的position都大于零且不等则是你的需求。 end 大概思路是如上。
例如:5678 astring:=inttostr(5678) for i:=1 to 10000 do begin 1。分解出i 由几个字符组成。 2。求出这几个字符在astring中的位置(如不在position为“0”) 3。若几个字符的position都大于零且不等则是你的需求。 end 大概思路是如上。
D daiqingbo Unregistered / Unconfirmed GUEST, unregistred user! 2000-09-02 #20 找了半天,居然找不到现成的。于是自己做了一个,我称之为递增进值数法,供各位参考。 使用二重循环。此法主要受限于最大的整数。 算法思想:用这么一种数来表示排列,第1位逢2进1,第2位逢3进1,第3位逢4进1, 然后将此数转换为排列。已经测试正确,至于效率,各位测试吧。
找了半天,居然找不到现成的。于是自己做了一个,我称之为递增进值数法,供各位参考。 使用二重循环。此法主要受限于最大的整数。 算法思想:用这么一种数来表示排列,第1位逢2进1,第2位逢3进1,第3位逢4进1, 然后将此数转换为排列。已经测试正确,至于效率,各位测试吧。