<% '算法程序题: '该公司笔试题就1个,要求在10分钟内作完。 '题目如下:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列, '如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连 Dim i, i1, i2, i3, i4, i5, i6 '循环变量 Dim t1, t2, t3, t4, t5 '临时变量 Dim pre, cur '上一位,当前位 Dim num '生成的数字串 Dim appear(5) '判断某个数字是否出现过的数组 例:appear(1)的值为0表示1没有出现过,值为1表示1出现过 pre =0'初始化为一个不相关的数字 For i =1To5 appear(i) =0 Next For i1 =1To5 cur = i1 IfNot(pre =3And cur =5) AndNot(pre =5And cur =3) Then pre = cur For i2 =1To5 t1 = pre '保护pre的值,防止在下面的操作中值被改变 cur = i2 IfNot(pre =3And cur =5) AndNot(pre =5And cur =3) Then pre = cur For i3 =1To5 t2 = pre cur = i3 IfNot(pre =3And cur =5) AndNot(pre =5And cur =3) Then If cur <>4Then pre = cur For i4 =1To5 t3 = pre cur = i4 IfNot(pre =3And cur =5) AndNot(pre =5And cur =3) Then pre = cur For i5 =1To5 t4 = pre cur = i5 IfNot(pre =3And cur =5) AndNot(pre =5And cur =3) Then pre = cur For i6 =1To5 t5 = pre cur = i6 IfNot(pre =3And cur =5) AndNot(pre =5And cur =3) Then appear(i1) =1'给出现过的数字打上标识 appear(i2) =1 appear(i3) =1 appear(i4) =1 appear(i5) =1 appear(i6) =1 If appear(1) =1And appear(2) =1And appear(3) =1And appear(4) =1And appear(5) =1Then'组合成的结果中所有数字必须都出现过 num = i1 & i2 & i3 & i4 & i5 & i6 response.write num &"<br />" num ="" EndIf For i =1To5 appear(i) =0 Next EndIf pre = t5 Next EndIf pre = t4 Next EndIf pre = t3 Next EndIf EndIf pre = t2 Next EndIf pre = t1 '还原pre的值 Next EndIf pre =0'还原pre的值 Next %>