一个算法问题

zjx200308 2009-11-27 08:35:06
从1到20随机选6个数,按下列条件排列:
1不能重复;
2从小到大;
3不能有4连数,5连数,6连数。如1,2,3,4。。。不可以1,2,3,4,5,。也不可以;1,2,3,4,5,6也不可以。
4随机从1到20挑几个数 ,把这几个数的排列去除,如挑1,5,8,9,11,15,18,17这7个数,把这几个数的选6排列去除。
5按上述条件,还有多少种排列,把他们显示出来。
...全文
187 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
咸清 2009-12-01
  • 打赏
  • 举报
回复
linc_M 2009-11-30
  • 打赏
  • 举报
回复
典型彩票问题 UP
cBirdNO1NO1 2009-11-30
  • 打赏
  • 举报
回复
Sub GetEnd(a() As Long)'数组a中按递增顺序保存待选数。结果添加到ListBox
Dim n As Long, fg As Boolean
Dim x1 As Long, x2 As Long, x3 As Long, x4 As Long, x5 As Long, x6 As Long
n = UBound(a): List1.Clear
For x1 = 0 To n - 5
For x2 = x1 + 1 To n - 4
For x3 = x2 + 1 To n - 3
For x4 = x3 + 1 To n - 2
For x5 = x4 + 1 To n - 1
For x6 = x5 + 1 To n
fg = (a(x4) - a(x1) = 3)
fg = fg Or (a(x5) - a(x2) = 3)
fg = fg Or (a(x6) - a(x3) = 3)
If Not fg Then
List1.AddItem a(x1) & "," & a(x2) & "," & a(x3) & "," & a(x4) & "," & a(x5) & "," & a(x6)
End If
Next
Next
Next
Next
Next
Next
End Sub
赵4老师 2009-11-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zjx200308 的回复:]
引用 4 楼 zhao4zhong1 的回复:
中了给我分一半行不?(^_^)

ok,你写的代码有问题。
[/Quote]
没看出我写的有啥问题。
zjx200308 2009-11-30
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 cbirdno1no1 的回复:]
Sub GetEnd(a() As Long)'数组a中按递增顺序保存待选数。结果添加到ListBox
Dim n As Long, fg As Boolean
Dim x1 As Long, x2 As Long, x3 As Long, x4 As Long, x5 As Long, x6 As Long
n = UBound(a): List1.Clear
For x1 = 0 To n - 5
    For x2 = x1 + 1 To n - 4
        For x3 = x2 + 1 To n - 3
            For x4 = x3 + 1 To n - 2
                For x5 = x4 + 1 To n - 1
                    For x6 = x5 + 1 To n
                        fg = (a(x4) - a(x1) = 3)
                        fg = fg Or (a(x5) - a(x2) = 3)
                        fg = fg Or (a(x6) - a(x3) = 3)
                        If Not fg Then
                            List1.AddItem a(x1) & "," & a(x2) & "," & a(x3) & "," & a(x4) & "," & a(x5) & "," & a(x6)
                        End If
                    Next
                Next
            Next
        Next
    Next
Next
End Sub
[/Quote]
我还有个疑问,怎么把我随便挑的数的排列去除?
zjx200308 2009-11-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhao4zhong1 的回复:]
中了给我分一半行不?(^_^)
[/Quote]
ok,你写的代码有问题。
liguicd 2009-11-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zjx200308 的回复:]
引用 7 楼 chen8013 的回复:
引用楼主 zjx200308 的回复:
..................
把这几个数的排列去除,如挑1,5,8,9,11,15,18,17这7个数,...........


“1,5,8,9,11,15,18,17”是7 个数?



我的意思是从1到20随便挑几个数(大于6个)如1,3,5,7,8,9,10,15这8个数,按我说的条件1,2,3 再把这8个数的排列去除。You Understand?
[/Quote]
zjx200308 2009-11-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 chen8013 的回复:]
引用楼主 zjx200308 的回复:
..................
把这几个数的排列去除,如挑1,5,8,9,11,15,18,17这7个数,...........


“1,5,8,9,11,15,18,17”是7 个数?


[/Quote]
我的意思是从1到20随便挑几个数(大于6个)如1,3,5,7,8,9,10,15这8个数,按我说的条件1,2,3 再把这8个数的排列去除。You Understand?
舉杯邀明月 2009-11-29
  • 打赏
  • 举报
回复
[Quote=引用楼主 zjx200308 的回复:]
..................
把这几个数的排列去除,如挑1,5,8,9,11,15,18,17这7个数,...........

[/Quote]
“1,5,8,9,11,15,18,17”是 7 个数?

「已注销」 2009-11-27
  • 打赏
  • 举报
回复
楼上要求不过分
赵4老师 2009-11-27
  • 打赏
  • 举报
回复
中了给我分一半行不?(^_^)
赵4老师 2009-11-27
  • 打赏
  • 举报
回复
dim z as long
dim n as integer
dim v as integer
dim a as integer
dim b as integer
dim c as integer
dim d as integer
dim e as integer
dim f as integer

z=0
for a=1 to 20-5
for b=a+1 to 20-4
for c=b+1 to 20-3
for d=c+1 to 20-2
for e=d+1 to 20-1
for f=e+1 to 20-0
if not (a+1=b and b+1=c and c+1=d) _
and not(b+1=c and c+1=d and d+1=e) _
and not(c+1=d and d+1=e and e+1=f) then
n=0
v=a
select case v
case 1,5,8,9,11,15,17,18
n=n+1
end select
v=b
select case v
case 1,5,8,9,11,15,17,18
n=n+1
end select
v=c
select case v
case 1,5,8,9,11,15,17,18
n=n+1
end select
v=d
select case v
case 1,5,8,9,11,15,17,18
n=n+1
end select
v=e
select case v
case 1,5,8,9,11,15,17,18
n=n+1
end select
v=f
select case v
case 1,5,8,9,11,15,17,18
n=n+1
end select
if n<6 then
z=z+1
debug.print z;":",a,b,c,d,e,f
end if
end if
next f
next e
next d
next c
next b
next a
  • 打赏
  • 举报
回复
loop
loop
loop
loop
loop
loop
tiandi79 2009-11-27
  • 打赏
  • 举报
回复
彩票么

743

社区成员

发帖
与我相关
我的任务
社区描述
VB 版八卦、闲侃,联络感情地盘,禁广告帖、作业帖
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧