<%
'算法程序题:
'该公司笔试题就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 = 1 To 5
appear(i) = 0
Next
For i1 = 1 To 5
cur = i1
If Not(pre = 3 And cur = 5) And Not(pre = 5 And cur = 3) Then
pre = cur
For i2 = 1 To 5
t1 = pre '保护pre的值,防止在下面的操作中值被改变
cur = i2
If Not(pre = 3 And cur = 5) And Not(pre = 5 And cur = 3) Then
pre = cur
For i3 = 1 To 5
t2 = pre
cur = i3
If Not(pre = 3 And cur = 5) And Not(pre = 5 And cur = 3) Then
If cur <> 4 Then
pre = cur
For i4 = 1 To 5
t3 = pre
cur = i4
If Not(pre = 3 And cur = 5) And Not(pre = 5 And cur = 3) Then
pre = cur
For i5 = 1 To 5
t4 = pre
cur = i5
If Not(pre = 3 And cur = 5) And Not(pre = 5 And cur = 3) Then
pre = cur
For i6 = 1 To 5
t5 = pre
cur = i6
If Not(pre = 3 And cur = 5) And Not(pre = 5 And cur = 3) Then
appear(i1) = 1 '给出现过的数字打上标识
appear(i2) = 1
appear(i3) = 1
appear(i4) = 1
appear(i5) = 1
appear(i6) = 1
If appear(1) = 1 And appear(2) = 1 And appear(3) = 1 And appear(4) = 1 And appear(5) = 1 Then '组合成的结果中所有数字必须都出现过
num = i1 & i2 & i3 & i4 & i5 & i6
response.write num & "<br />"
num = ""
End If
For i = 1 To 5
appear(i) = 0
Next
End If
pre = t5
Next
End If
pre = t4
Next
End If
pre = t3
Next
End If
End If
pre = t2
Next
End If
pre = t1 '还原pre的值
Next
End If
pre = 0 '还原pre的值
Next
%>