fightsky
发表于 2010-7-27 13:19:01
Local $x, $y, $j, $Result
Dim $input = InputBox("", "车棚有三轮车和自行车共65辆,输入车轮总数")
If $input<= 195 And $input > 129 Then
If IsInt(Execute($input)) Then ;//判断是否是整型量 如果不是则提示 MsgBox(4096, "警告", "车轮残缺不全" & @CRLF & "不予计算")
If Mod($input,2) <> 0 Or $input >=131 Then ;//判断车库中肯定共存有2轮
If Mod($input,3) <> 0 Or $input <195 Then;//判断车库中肯定共存有3轮车
For $x = 0 To $input / 2 ;//计算2轮
For $y = 0 To $input / 3 ;//计算3轮
$j = $x *2+ $y*3 ;//计算总轮子数量
If $j = $input And $x+$y=65 Then
$Result &= "自行车有:" & $x & "辆" & @TAB & "三轮车有:" & $y & "辆" & @CRLF
EndIf
Next
Next
MsgBox(0, "车棚中有", $Result)
Exit
EndIf
MsgBox(4096, "警告", "车库中难道没有三轮车吗?")
Exit
EndIf
MsgBox(4096, "警告", "车库中难道没有自行车吗?")
Exit
EndIf
MsgBox(4096, "警告", "车轮残缺不全" & @CRLF & "不予计算,请输入整数")
EndIf
MsgBox(4096, "警告", "你怎么算车轮的,范围如下"&@LF _
&@lf _
&'65*2 ~ 65*3 = 130 ~ 195'&@LF _
&@lf _
&'猪脑子阿你!!!!')
各位长辈们看下这样对否!
qq1244521
发表于 2010-7-27 14:13:20
交个作业,不知道对不{:face (270):}
Dim $z,$s,$j
$j=""
For $z=0 To 75
For $s=0 To 50
If $s+$z=65 And $z*2+$s*3=150 Then
$j=$j&"自行车 "&$z&" 辆 "&"三轮车"&$s&" 辆 "&@CRLF
EndIf
Next
Next
MsgBox(0,"计算结果",$j)
lsh127k
发表于 2010-7-27 16:08:52
假设全不都是自行车,那么65俩车就有65x2=130,实际轮子是150个,差150-130=20,少20个是因为我没把三轮车当成了自行车,而三轮车比自行车躲一个轮子,所以三轮车是20俩,自行车就是45俩。
anchie
发表于 2010-7-28 01:06:04
Dim $x ,$y ,$s ,$t
$t = ""
For $x = 1 To 8
For $y = 1 To 12
For $s = 2 To 36
If $x + $y + $s = 36 And $x * 4 + $y * 3 + $s / 2 = 36 Then
$t = "男人有:"&$x&"个"&@CRLF&"女人有:"&$y&"个"&@CRLF&"小孩有:"&$s&"个"
EndIf
Next
Next
Next
MsgBox(0,"",$t)
anchie
发表于 2010-7-28 01:23:33
假设全不都是自行车,那么65俩车就有65x2=130,实际轮子是150个,差150-130=20,少20个是因为我没把三轮车当 ...
lsh127k 发表于 2010-7-27 16:08 http://www.autoitx.com/images/common/back.gif
这个算法很直接也很简单啊
Dim $x , $y
$y =150 - 65 * 2
$x = 65 - $y
MsgBox(0,"","三轮车是:"&$y&"辆"&@CRLF&"自行车是:"&$x&"辆")
yt516
发表于 2010-7-28 07:34:08
我看看答案我是新人
flew0214
发表于 2010-7-28 08:57:03
不知道程序里要怎么实现呢?
zps26
发表于 2010-7-28 11:04:38
本帖最后由 zps26 于 2010-7-28 11:08 编辑
Dim $a,$b,$c,$d
For $a=0 To 36/4
For $b=0 To 36/3
For $c=0 To 36 Step 2
If $a+$b+$c=36 And $a*4+$b*3+$c/2=36 Then
$d&="男人有"&$a&"人"&@TAB&"女人有"&$b&"人"&@TAB&"孩子有"&$c&"人"&@CRLF
EndIf
Next
Next
Next
MsgBox(0,"結果有以下可能",$d)
zps26
发表于 2010-7-28 11:39:29
本帖最后由 zps26 于 2010-7-28 11:42 编辑
Dim $x,$z
For $x = 0 To 45-3
If $x*5+45=$x*7+3 Then
$z&="買羊人有"&$x&"人"&@TAB&"羊價為"&$x*5+45&"元"&@CRLF
EndIf
Next
MsgBox(0,"結果有以下可能",$z)
fightsky
发表于 2010-7-28 15:24:32
我做了2道题目
2、36个人36块砖,男人搬4快,女人搬3块,小孩2个人搬一块砖。一次搬完,没有闲着的人,求男人,女人,小孩的人数
;容易错误点考虑到所有恩没有闲着
Local $x,$y,$z,$j,$result
For $x = 0 to 36/4 Step 1
For $y = 0 to 36/3 Step 1
For $z = 0 to 36/2 Step 1
$j = $x*4 + $y*3 + $z*2
If $j=36 And $x = $y and $y = $z and $z = $x Then ;容易错误点考虑到所有恩没有闲着
$Result &= "男人:" & $x & " 个" & @TAB & "女人:" & $y & " 个" &@TAB & "小孩:" & $z & " 个" & @CRLF
EndIf
Next
Next
Next
MsgBox(0, "所有可能性如下:", $Result)
;这道题目如果使用简单的条件语句if , while , select ,等更加简单效率更高,用for枚举的话存在执行效率问题,下题目使用继续使用for,
;3、若干个人共同买羊,如果每人出5元,还差45元;如果每人出7元,还差3元,求买羊人数和羊价。
Local $x,$y,$j,$result
For $x = 0 to 1000 Step 1 ;人数我不知道人数所以定义了一个
For $y = 0 to 2000 Step 1 ;样价格我不知道羊的价格所以随便定义了一个
If $y - $x * 5 = 45 and $y - $x * 7 = 3 Then
MsgBox(0,"Result as below"," People:"& $x & @lf _
& " Sheep:" & $y)
ExitLoop 1
EndIf
Next
Next
;大家可以明显看到执行效率很低,不知道大家有没有理解之前有个长辈说得执行效率问题之说,好好看看就知道了
shenrenba
发表于 2010-7-28 15:44:46
第二题Local $a,$b
For $a=0 To 36
For $b=0 To 36
If 4*$a+3*$b+(36-$a-$b)/2=36 Then
MsgBox(0,"","一共有"&$a&"男人,"&$b&"女人和"&36-$a-$b&"孩子")
EndIf
Next
Next
fightsky
发表于 2010-7-28 16:40:59
#cs ----------------------------------------------------------------------------
4、有奇数块石头沿直线线每隔一米放一块,要把石头集中在最中间的位置上从最右边的石头开始,按顺序每次只能搬一块石头。
如果某人用这样办法搬石头,除了中间的石头外把其余的石头向中间集中,共走了300米,问一共放了多少石头?
这道题目大家要好好思考一下,这个题目有点歧义哦 ?????
假设:奇数块石头如下
0 0 0 0 0 0 0 0 0
0 0 0 00 0 0 0 0
0 0 000 0 0 0 0 搬法1 我有从最左边先搬的,楼主是不是这样的想法?
0 0000 0 0 0 0
00000 0 0 0 0
000000 0 0 0
0000000 0 0
00000000 0
000000000
0 0 0 0 0 0 0 0 0
0 0 0 00 0 0 0 0
0 0 0 000 0 0 0
0 0 0000 0 0 0 搬法2 我有从最左边先搬的,然后在右边,是不是这样依次?
0 0 00000 0 0
0 000000 0 0
0 0000000 0
00000000 0
00000000
#ce ----------------------------------------------------------------------------
shenrenba
发表于 2010-7-28 17:22:27
第四题Dim $a
For $a=0 To 300
If $a^2*2+$a=300 Then
MsgBox(0,"","石头有"&$a*2+1&"个")
EndIf
Next
shenrenba
发表于 2010-7-27 19:47:21
本帖最后由 shenrenba 于 2010-7-28 08:39 编辑
第五题
Dim $a,$b ;A朝前走a天,B朝前走b天
For $a=0 To 4
For $b=0 To 4
If 2*$a+$a+$a=4 And ($b-$a)*2+$b=4 Then ;A回来把食物给B和C,B回来把食物给C
MsgBox(0,"","最远深入"&($b+4)*20&"千米")
EndIf
Next
Next----------------------------------------------------------看错题了------------------------------------
破帽遮颜
发表于 2010-7-27 23:09:26
学习一下算法