求数字1~9从1位至9位的组合算法
求数字1~9从1位至9位的组合算法,要求输出:1位:123456789
2位: 11 12 … 19
21 22 … 29
… … … …
91 … … 99
…
9位:111111111 11111112 … 111111119 11111121 111111122 111111129 …
… … … … … … …
… … … … … … 999999999
即数字1~9从1位至9位的所有排列组合!求解! 有意义吗?要算出来是没问题的 $len = 9
$num = ""
For $i = 1 To $len
$num &= 9
Next
For $i = 1 To $num
If Not StringInStr($i, "0") Then
If Int(StringReplace($i, "1", "0")) = 0 Then FileWrite($file, "第" & StringLen($i) & "位" & @TAB)
FileWrite($file, $i & @TAB)
If Int(StringReplace($i, "9", "0")) = 0 Then FileWrite($file, @CRLF)
EndIf
Next
用字符串写了个简单的。。。。。。 原帖由 顽固不化 于 2009-4-10 10:13 发表 http://www.autoitx.com/images/common/back.gif
有意义吗?要算出来是没问题的
我也觉得没意义,很简单的算术
list(1)
list(2)
list(3)
........
Func list($x)
for $j=10^($x-1)to 10^$x
$m=StringFormat("%0"&$x&"d",$j)
if not StringInStr($m,"0") Then
ConsoleWrite($m&@CRLF)
endif
Next
EndFunc ;==>list
au3的效率很低的,不信试试list(9) 原帖由 pcbar 于 2009-4-10 10:46 发表 http://autoitx.com/images/common/back.gif
我也觉得没意义,很简单的算术
list(1)
list(2)
list(3)
........
Func list($x)
for $j=10^($x-1)to 10^$x
$m=StringFormat("%0"&$x&"d",$j)
if not StringInStr($m,"0") Then
ConsoleWrite($m&@C ...
还是老大们厉害。。 dim $a=
dim $f=$a
for $i=1 to n;n 可以自己设 n 为要得到的最大位数如9
$f=compages($f,$i,$a)
next
func compages($b,$n,$a)
;b 为n-1位数组,n为数的位数,a为初始数组
$c
if $n=1 then
$c=$b
/显示数组c到c]
endif
$m=0
if $n>=2 then
for $i=1 to b
for $j=1 to a
$m+=1
$c=b[$i]*10+
next
next
$c=m
/显示c到c]
return $c
endfunc 果然高手不少!假如再提高难度:
0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
从1位至z(36位)的所有排列组合!又如何呢? dim $a=[36,0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
]
dim $f=$a
for $i=1 to n;n 可以自己设 n 为要得到的最大位数如9
$f=compages($f,$i,$a)
next
func compages($b,$n,$a)
;b 为n-1位数组,n为数的位数,a为初始数组
$c
if $n=1 then
$c=$b
/显示数组c到c]
endif
$m=0
if $n>=2 then
for $i=1 to b
for $j=1 to a
$m+=1
$c=b[$i]&a
next
next
$c=m
/显示c到c]
return $c
endfunc 原帖由 seominho 于 2009-4-10 14:03 发表 http://www.autoitx.com/images/common/back.gif
dim $a=[36,0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
]
dim $f=$a
for $i=1 to n;n 可以自己设 n 为要得到的最大位数如9
$f=compages($f,$i,$a)
next
func compages($b, ...
调试出错!如图:
a,b,…要不要用Chr()转换? 上面的a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
应该都用 双引号括起来 如 "a","b","c"...... 原帖由 seominho 于 2009-4-10 14:34 发表 http://www.autoitx.com/images/common/back.gif
上面的a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
应该都用 双引号括起来 如 "a","b","c"......
也不对!代码有误! 原帖由 seominho 于 2009-4-10 11:09 发表 http://www.autoitx.com/images/common/back.gif
dim $a=
dim $f=$a
for $i=1 to n;n 可以自己设 n 为要得到的最大位数如9
$f=compages($f,$i,$a)
next
func compages($b,$n,$a)
;b 为n-1位数组,n为数的位数,a为初始数组
$c
if...
代码有误! dim $a=
dim $f=$a
for $i=1 to n;n 可以自己设 n 为要得到的最大位数如9
$f=compages($f,$i,$a)
next
func compages($b,$n,$a)
;b 为n-1位数组,n为数的位数,a为初始数组
dim $c=
if $n=1 then
$c=$b
/显示数组c到c]
endif
$m=0
if $n>=2 then
redim $c[$b*$a+1]
for $i=1 to $b
for $j=1 to $a
$m+=1
$c=$b[$i]*10+$a[$j]
next
next
$c=$m
/显示c到c]
return $c
endfunc
这样就没问题了。。。。 dim $a=[36,0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
]
dim $f=$a
for $i=1 to n;n 可以自己设 n 为要得到的最大位数如9
$f=compages($f,$i,$a)
next
func compages($b,$n,$a)
;b 为n-1位数组,n为数的位数,a为初始数组
dim $c=
if $n=1 then
$c=$b
/显示数组c到c]
endif
$m=0
if $n>=2 then
redim $c[$b*a+1]
for $i=1 to $b
for $j=1 to $a
$m+=1
$c=$b[$i]&$a
next
next
$c=$m
/显示c到c]
return $c
endfunc 原帖由 seominho 于 2009-4-13 09:20 发表 http://www.autoitx.com/images/common/back.gif
dim $a=
dim $f=$a
for $i=1 to n;n 可以自己设 n 为要得到的最大位数如9
$f=compages($f,$i,$a)
next
func compages($b,$n,$a)
;b 为n-1位数组,n为数的位数,a为初始数组
dim $c[ ...
你还是调试好再发代码吧!菜鸟看不懂也不会帮你修改!
页:
[1]
2