主题:  请教一个算法思路

aSir

职务:普通成员
等级:1
金币:0.0
发贴:78
#12002/7/17 8:41:21
最近朋友要我帮着做个程序其中有这样一段:
要求从{1,2,3,4,5,6,7,8,9,0,a,....z}集合中取出任意数字和字母,构成一个字串和原字串比较(原字串长度和值都未知),值相等时就打出这个字串。

我想用这么个方法,
定义a="1,2,3,4,5,6,7,8,9,0,a,....z"
aa=split(a)
for it=lbound(aa) to ubound(aa)
然后用aa(i)进行按顺序进行组合,对N位数字进行aa(i)的循环取值,但当中循环太多,一时乱了思路,想了很久想不出头绪。只好请各高手指教




绿茶

职务:普通成员
等级:8
金币:10.0
发贴:19267
#22002/7/17 11:25:04
aa=split(a)
'org_str为原字串
bb=""
n=""
for k=lbound(aa) to ubound(aa)
n=n&9
next
n=int(n)

for i=lbound(aa) to ubound(aa)
'随机取出一个值
Randmize
j=int(n*rnd+1)
if (j)>ubound(aa) then next
bb=bb&aa(j)'与原来的值连接

'再次取出一值
Randmize
jj=int(n*rnd+1)
if (jj)>ubound(aa) then next
bb=bb&aa(jj)

if bb=org_str then response.write bb

next

这个方法也不是怎么好,但或许会对你有所帮助

编辑历史:[这消息被germchen编辑过(编辑时间2002-07-17 11:26:08)]


aSir

职务:普通成员
等级:1
金币:0.0
发贴:78
#32002/7/23 23:05:17
这个方法用随机数,效率会很低,我没试过。还有高手吗?



helmet

职务:版主
等级:4
金币:10.0
发贴:1559
#42002/7/24 17:45:04
aSir在上个帖子中说
引用:
最近朋友要我帮着做个程序其中有这样一段:
要求从{1,2,3,4,5,6,7,8,9,0,a,....z}集合中取出任意数字和字母,构成一个字串和原字串比较(原字串长度和值都未知),值相等时就打出这个字串。

我想用这么个方法,
定义a="1,2,3,4,5,6,7,8,9,0,a,....z"
aa=split(a)
for it=lbound(aa) to ubound(aa)
然后用aa(i)进行按顺序进行组合,对N位数字进行aa(i)的循环取值,但当中循环太多,一时乱了思路,想了很久想不出头绪。只好请各高手指教





这不是暴力穷解法么。



5D荣誉版主

职务:普通成员
等级:2
金币:10.0
发贴:658
#52002/7/26 17:08:31
什么暴力穷解法能详细说明一下吗?



今晚在线

职务:普通成员
等级:3
金币:1.0
发贴:761
#62002/7/29 3:19:38
就是破密码的穷举法



今晚在线

职务:普通成员
等级:3
金币:1.0
发贴:761
#72002/7/29 3:20:16
你最好说说要实现什么具体功能

我看不太懂你的意思



helmet

职务:版主
等级:4
金币:10.0
发贴:1559
#82002/7/29 17:55:32
其实就是高二数学的排列与组合。