|
jmz573515
银牌会员
积分 1212
发帖 464
注册 2006-12-13
状态 离线
|
『楼 主』:
[已解决]100个馒头分在6个盘子里 ... (vbs)
100个馒头分在6个盘子里,每个盘子分的馒头个数都不离6(如16,6,62等),馒头的数可以重复.
[ Last edited by jmz573515 on 2007-5-9 at 05:41 PM ]
|
|
2007-5-9 08:41 |
|
|
flyinspace
银牌会员
积分 1206
发帖 517
注册 2007-3-25
状态 离线
|
『第
2 楼』:
6 6 6 6 16 60
随便给了一个:)vbs我不会:)帮不了你。
@echo off & SetLocal EnableDelayedExpansion
rem 提取计算的数字:
set "count=0"
for /l %%i in (0,1,100) do echo %%i | find "6" && set "count+=1" & set "num!count!=%%i"
然后,换个算法而已。。(循环查找了。满足条件的就打印出来)
|
知,不觉多。不知,乃求知 |
|
2007-5-9 12:36 |
|
|
ccwan
金牌会员
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第
3 楼』:
到excelhome求了段vba代码来,不过不知如何改成vbs的,呵呵。
Quote: |
- Sub cc2()
- Dim s As New Collection, i As Long
- For i = 1 To 100
- If i Like "*6*" Then s.Add i, CStr(i)
- Next
- For a = 1 To s.Count
- For b = a To s.Count
- For c = b To s.Count
- For d = c To s.Count
- For e = d To s.Count
- For f = e To s.Count
- If s(a) + s(b) + s(c) + s(d) + s(e) + s(f) = 100 Then Debug.Print s(a) & "+" & s(b) & "+" & s(c) & "+" & s(d) & "+" & s(e) & "+" & s(f) & " = 100"
- Next
- Next
- Next
- Next
- Next
- Next
- End Sub
ccwan发表于: 2007-05-09 13:09 |
|
|
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2007-5-9 13:10 |
|
|
jmz573515
银牌会员
积分 1212
发帖 464
注册 2006-12-13
状态 离线
|
『第
4 楼』:
For a = 1 To s.Count
For b = a To s.Count
For c = b To s.Count
For d = c To s.Count
For e = d To s.Count
For f = e To s.Count
这个用的妙!谢谢,问题解决了。
|
|
2007-5-9 17:40 |
|
|
ccwan
金牌会员
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第
5 楼』:
jmz573515兄何不贴出代码,大家共享。
|
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2007-5-9 17:51 |
|
|
jmz573515
银牌会员
积分 1212
发帖 464
注册 2006-12-13
状态 离线
|
『第
6 楼』:
’不知道有没有更好的方法
For i = 1 To 100-6*5
If instr(i,"6")<>0 then j=j & i & ";"
Next
j=left(j,len(j)-1):s=split(j,";"):m=ubound(s)
for a=0 to m
for b=a to m
for c=b to m
for d=c to m
for e=d to m
for f=e to m
s(a)=cint(s(a)):s(b)=cint(s(b)):s(c)=cint(s(c)):s(d)=cint(s(d)):s(e)=cint(s(e)):s(f)=cint(s(f))
If s(a) + s(b) + s(c) + s(d) + s(e) + s(f) = 100 Then sn=sn & s(a) & "+" & s(b) & "+" & s(c) & "+" & s(d) & "+" & s(e) & "+" & s(f) & " = 100" & vbcrlf
next
next
next
next
next
next
msgbox sn
|
|
2007-5-9 18:00 |
|
|
ccwan
金牌会员
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第
7 楼』:
方法可能还有吧,不过谈不上什么更好的方法,只是思路不同罢了。
|
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2007-5-9 18:14 |
|
|
flyinspace
银牌会员
积分 1206
发帖 517
注册 2007-3-25
状态 离线
|
『第
8 楼』:
给个批处理版的。。不过速度超级慢。。。。
@echo off & SetLocal EnableDelayedExpansion
rem 提取计算的数字:
set "count=0"
echo 正在提取数据……
for /l %%i in (0,1,100) do (
echo %%i | find "6" >nul && call :GetNum "%%i"
)
echo 正在打印数据……
for /f "delims== tokens=2 " %%a in ('set ShowNum') do (
set "a=%%a"
for /f "delims== tokens=2 " %%b in ('set ShowNum') do (
set "b=%%b"
for /f "delims== tokens=2 " %%c in ('set ShowNum') do (
set "c=%%c"
for /f "delims== tokens=2 " %%d in ('set ShowNum') do (
set "d=%%d"
for /f "delims== tokens=2 " %%e in ('set ShowNum') do (
set "e=%%e"
for /f "delims== tokens=2 " %%f in ('set ShowNum') do (
set "f=%%f"
set /a "s=!a!+!b!+!c!+!d!+!e!+!f!"
if "!s!"=="100" call :PrintNum "!a!" "!b!" "!c!" "!d!" "!e!" "!f!" "!s!"
)
)
)
)
)
)
GOTO END
:GetNum _num_
set /a "count+=1"
set ShowNum%count%=%~1
goto :EOF
:PrintNum
echo %~1+%~2+%~3+%~4+%~5+%~6=%~7
goto :EOF
:END
pause
|
知,不觉多。不知,乃求知 |
|
2007-5-9 18:39 |
|
|
zouzhxi
中级用户
蝴蝶之吻
积分 430
发帖 177
注册 2006-9-20 来自 广东深圳
状态 离线
|
『第
9 楼』:
我试了一那个P...
Quote: | 6+6+6+6+16+60=100 第1个 - 开始 19:58:32.85
6+6+6+6+60+16=100 第2个 - 用时 19:58:33.10
6+6+6+16+6+60=100 第3个 - 用时 19:58:42.51
6+6+6+16+60+6=100 第4个 - 用时 19:58:43.26
6+6+6+60+6+16=100 第5个 - 用时 19:58:47.12
6+6+6+60+16+6=100 第6个 - 用时 19:58:47.64
6+6+16+6+6+60=100 第7个 - 用时 20:01:46.35
6+6+16+6+60+6=100 第8个 - 用时 20:01:47.09
6+6+16+60+6+6=100 第9个 - 用时 20:02:01.06
6+6+60+6+6+16=100 第10个 - 用时 20:03:13.75
6+6+60+6+16+6=100 第11个 - 用时 20:03:14.26
6+6+60+16+6+6=100 第12个 - 用时 20:03:23.89
…………………… |
|
|
Butterfly Kiss Blog
计算机DIY联盟论坛 |
|
2007-5-10 20:06 |
|
|
zhoushijay
高级用户
Autowalk
积分 845
发帖 375
注册 2007-3-3
状态 离线
|
『第
10 楼』:
set q=c(6)
for each n1 in q
for each n2 in q
for each n3 in q
for each n4 in q
for each n5 in q
for each n6 in q
if q(n1)+q(n2)+q(n3)+q(n4)+q(n5)+q(n6)=100 then
y=y&chr(10)&q(n1)&"+"&q(n2)&"+"&q(n3)&"+"&q(n4)&"+"&q(n5)&"+"&q(n6)
end if
next
next
next
next
next
next
msgbox(y)
function c(x)
set d=createobject("scripting.dictionary")
i=1
for a=0 to 9
for b=0 to 9
if a-x=0 or b-x=0 then
f=int(a&b)
d.add i,f
i=i+1
end if
next
next
set c=d
end function
不知道为啥,这个代码结构上似乎没错,但是消耗了大半的CPU资源最后仍然没反映。。
[ Last edited by zhoushijay on 2007-5-12 at 01:34 PM ]
|
|
2007-5-11 16:36 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
11 楼』:
Function c(x)
Set d = CreateObject("Scripting.Dictionary")
i = 1
For a = 0 To 9
For b = 0 To 9
If a - x = 0 or b - x = 0 Then
f = Int(a & b)
d.add i,f
i = i + 1
End If
Next
Next
Set c = d
End Function
这个过程只是浪费资源……
Function c(x)
Set d = CreateObject("Scripting.Dictionary")
i = 1
For a = 1 To x - 1
i = i + 1
f = CInt(a & x)
d.add i,f
Next
For a = 0 To 9
i = i + 1
f = CInt(x & a)
d.add i,f
Next
For a = x - 1 To 9
i = i + 1
f = CInt(a & x)
d.add i,f
Next
Set c = d
End Function
|
|
2007-5-11 19:55 |
|
|
zouzhxi
中级用户
蝴蝶之吻
积分 430
发帖 177
注册 2006-9-20 来自 广东深圳
状态 离线
|
|
2007-5-11 20:59 |
|
|
digger
初级用户
游荡的孤魂
积分 79
发帖 29
注册 2007-4-2 来自 湖南
状态 离线
|
『第
13 楼』:
修改自8F的代码:
@echo off
setlocal enabledelayedexpansion
echo 正在处理数据...
echo.
echo 此过程超级慢,CPU占用将高达100%%,请吃顿饭再回来^^_^^
echo.
set begin=%time%
:: 提取数字
for /l %%i in (1,1,5) do set str=!str! %%i6
for /l %%i in (0,1,9) do set str=!str! 6%%i
set str=6 %str%
for %%i in (%str%) do (
for %%j in (%str%) do (
for %%k in (%str%) do (
for %%l in (%str%) do (
for %%m in (%str%) do (
for %%n in (%str%) do (
set expression=%%i+%%j+%%k+%%l+%%m+%%n
set /a sum=!expression!
if !sum! equ 100 set /a num+=1&echo 第!num!条记录:!expression!=100 时间:!time!
)
)
)
)
)
)
echo.
echo 终于完了,快看看花费的时间吧,破记录了吗?^^_^^
echo.
echo 开始时间:%begin%
echo 结束时间:%time%
pause
|
|
2007-5-11 22:33 |
|
|
sunjiang0
新手上路
积分 6
发帖 4
注册 2007-5-12
状态 离线
|
|
2007-5-12 05:23 |
|