小吧 发表于 2005-5-24 23:56:55

[讨论]一个经典数学问题的讨论!!

<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 &lt; k And j &lt; k Then
If 6 * i + 3 * j = k And i + j + k = 100 Then
List1.AddItem i &amp; " " &amp; j &amp; " " &amp; 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>

马大哈 发表于 2005-5-25 16:24:41

<P>.......晕了!!!</P><P>什么和什么呀??</P>

马大哈 发表于 2005-5-25 22:21:24

<P>..........................怎么感觉话风不太对?</P><P>还是说说程序吧!!大家还有更好的解决办法吗?</P>

小吧 发表于 2005-6-13 18:43:22

<P>呵呵   条条大道通北京哦!!!!!!</P>
页: [1]
查看完整版本: [讨论]一个经典数学问题的讨论!!