|
<P>古代《张邱建算经》中的“百鸡问题”是一道很有名的算题。题目内容是:用100元买100只鸡,大公鸡5元1只,母鸡3元1只,小鸡1元3只。问各能买多少只? </P>
<P>三个网友分别写了三段代码:</P>
<P>第一个网友:
Dim i, j, k As Integer
For i = 1 To 20
For j = 1 To 30
For k = 3 To 99
If k Mod 3 = 0 And i < k And j < k Then
If 6 * i + 3 * j = k And i + j + k = 100 Then
List1.AddItem i & " " & j & " " & k
End If
End If
Next
Next
Next
这是一个常规的思路,就是三种鸡的总数为100,钱为100。缺点有二: 一,运算过于复杂,三重循环;二,写代码注意缩进!</P>
<P>第二个网友:</P>
<P>Dim x As Integer, y As Integer, z As Integer
For x = 0 To 20
For y = 0 To 34
z = 100 - x - y
If 5 * x + 3 * y + z / 3 = 100 Then
Print x, y, z
End If
Next y
Next x </P>
<P>经过思考,母鸡最多可以买34只,公鸡最多可以买20只,剩下的自然就是小鸡数量了,这样就可以少掉很多不必要的循环累赘,加快处理速度!</P>
<P>第三个网友:</P>
<P>Option Explicit
Dim i%, j%
Private Sub Form_Load()
Me.Show
For i = 1 To 33
For j = 1 To 20
If 4 * i + 7 * j = 100 Then
Print j; i; 100 - i - j
End If
Next j
Next i
End Sub
他的思路是先通过对数量方程和钱数方程的合并消去了小鸡(因为小鸡的数量肯定最多),然后循环输出。</P>
<P>大家不要感觉这个问题很简单随便写个代码就ok ,其实重要的是分析你的算法运算速度等等很多方面的问题,这个小问题也有很多方法实现,希望大家多多讨论,最好把自己的思路和代码发上来大家讨论!!!</P> |
|