Board logo

标题: [已解决]罗列用不同数字组成的所有三位数 [打印本页]

作者: jmz573515     时间: 2007-1-27 02:00    标题: [已解决]罗列用不同数字组成的所有三位数

想写一个三位数的数字组合(如001,002...999),排除有两位数相等的(如001,112,313,449 等)组合以及三位数都相等的(如000,111...999)。

注:012,021,120,102,210,201这里只取任意一种,其它以此类推。

[ Last edited by jmz573515 on 2007-1-26 at 06:41 PM ]
作者: zhclvip     时间: 2007-1-27 02:10    标题: 合你心愿

dim msg
combine "0123456789",3,""
msgbox msg
Sub Combine(sar,num,str)
        If num=0 Then
                msg=msg&str&";"
        Else
                For i=1 To Len(sar)
                        Call Combine(Right(sar,Len(sar)-i),num-1,str&Mid(sar,i,1))
                Next
        End If
End Sub
作者: jmz573515     时间: 2007-1-27 02:13
好,学习了。

(现在受限不能加分,过后补上。)
作者: namejm     时间: 2007-1-27 02:40
  我跟一个BAT版的,是用组合数的思路:
@echo off
set str=0123456789
cd.>result.txt
setlocal enabledelayedexpansion
for /l %%i in (0,1,7) do (
    set /a num1=%%i+1
    for /l %%j in (!num1!,1,8) do (
        set /a num2=%%j+1
        for /l %%k in (!num2!,1,9) do (
            set /a count+=1
            echo !str:~%%i,1!!str:~%%j,1!!str:~%%k,1!>>result.txt
        )
    )
)
echo   各个数位上的数字互不相同,且组成该数的数字与其他数中的数字不完全相同的三位数有 %count% 个>>result.txt
start result.txt
  遵照ccwan的建议,加上了统计结果。

[ Last edited by namejm on 2007-1-26 at 11:08 PM ]
作者: ccwan     时间: 2007-1-27 03:01
斑斑的代码总是那么精彩,欣赏~~
作者: jmz573515     时间: 2007-1-27 03:01
谢谢二位!
作者: tongwandou     时间: 2007-4-19 10:02
二楼用C写得,比较简单!我喜欢4楼给出的代码,谢谢二位!
作者: minmin888     时间: 2007-5-8 10:37
学到东西了!