您的位置:首页 > 其它

排列组合问题。

2006-10-16 16:40 323 查看
<%

'算法程序题:
'该公司笔试题就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

%>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: