| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2172 人关注过本帖
标题:[求助]有名的百鸡问题(我无从下手)
只看楼主 加入收藏
寂寞有害
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-3-15
收藏
 问题点数:0 回复次数:30 
[求助]有名的百鸡问题(我无从下手)
公鸡1只5钱,母鸡1只3钱,小鸡3钱1只,用100钱买100只鸡,求公鸡、母鸡、小鸡各多少?

俺是刚学的,想了好久,就是不知道该怎么算,应该是一个多重循环的问题,请高手帮忙解答,
先谢了!
搜索更多相关主题的帖子: 无从下手 
2007-03-23 01:15
寂寞有害
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-3-15
收藏
得分:0 

写错了,小鸡是3只一钱!!!

2007-03-23 04:17
121038
Rank: 1
等 级:新手上路
威 望:2
帖 子:414
专家分:0
注 册:2005-8-3
收藏
得分:0 
我就说,算了半天结果不对,你等下,马上思路就清晰了

2007-03-23 04:21
121038
Rank: 1
等 级:新手上路
威 望:2
帖 子:414
专家分:0
注 册:2005-8-3
收藏
得分:0 
编程最重要的思想就是要转换为数学问题

根据上面,设公、母、小鸡,各x,y,z只,列出方程
x+y+z=100
5x+3y+(z/3)=100

整理下方程
x=100-z-y
5(100-z-y)+3y+(z/3)=100
500-5z-5y+3y+(z/3)=100
500-2y-5z+(z/3)=100
-2y-5z+(z/3)=-400
2y+5z-(z/3)=400
-z/3=400-2y-5z
-z=1200-6y-15z
14z+6y=1200
7z+3y=600

结果就出来了,如果我方程没解错的话,只要满足上面一个条件,也就是7z+3y=600,z+y<=100即可..

2007-03-23 04:26
寂寞有害
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-3-15
收藏
得分:0 

看了一个冒泡排序的例子,研究了差不多3个小时在看懂,从中得了一点启发,
---------------------------------------------------------------------
Private Sub Command1_Click()
Dim g, m, x, a As Integer
For g = 1 To 16
For m = 1 To 31
For x = 3 To 96 Step 3
If g + m + x = 100 And 5 * g + 3 * m + x / 3 = 100 Then
Print g; m; x
End If
Next x
Next m
Next g
End Sub
----------------------------------------------------------------------
4,18,78 结果
8,11,81
12,4,84
------------------
这么个问题花了我4个多小时,哎。。

2007-03-23 05:01
huangwy
Rank: 1
等 级:新手上路
威 望:2
帖 子:297
专家分:0
注 册:2007-3-23
收藏
得分:0 
首先要先设置3个变量的值
因为公鸡是5钱一只,所以如果全部买公鸡最多不会超过20只
同理,母鸡是33只,小鸡是300只

然后我们用一个数组来保存结果

过程如下:
Type MyType
x%
y%
z%
end type
dim arrRl() as mytype

sub Mysub()
dim x%,y%,z%
dim arrCnt%
for x=1 to 20
for y=1 to 33
for z=1 to 300
DoEvents
if 5*x+33*y+0.3*z=100 then
if x+y+z=100 then
arrCnt=arrCnt+1
redim prease arrRl(arrCnt)
with arrrl(arrcnt)
.x=x
.y=y
.z=z
end with
end if
next z
next y
next x
end sub
2007-03-23 14:22
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
以下是引用寂寞有害在2007-3-23 5:01:30的发言:

看了一个冒泡排序的例子,研究了差不多3个小时在看懂,从中得了一点启发,
---------------------------------------------------------------------
Private Sub Command1_Click()
Dim g, m, x, a As Integer
For g = 1 To 16
For m = 1 To 31
For x = 3 To 96 Step 3
If g + m + x = 100 And 5 * g + 3 * m + x / 3 = 100 Then
Print g; m; x
End If
Next x
Next m
Next g
End Sub
----------------------------------------------------------------------
4,18,78 结果
8,11,81
12,4,84
------------------
这么个问题花了我4个多小时,哎。。

虽然这个想起来很简单,但效率太低了,不知道你学过矩阵没,用矩阵解决快得多,不过代码也就不可能就这么点了.


雁无留踪之意,水无取影之心
2007-03-23 16:24
丹枫
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-3-27
收藏
得分:0 
回复:(PcrazyC)以下是引用寂寞有害在2007-3-23 5:0...

Dim x As Integer
Dim y As Integer
Dim z As Integer

Private Sub Form_Load()
For x = 1 To 20
For y = 1 To 35
If (15 * x + 9 * y + (100 - x - y)) = 300 Then Debug.Print x, y, 100 - x - y
Next
Next
End Sub

2007-03-27 23:00
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
最弱智的解法,哈哈...我不会数学一样解...这才叫是真正的电脑解法.
Private Sub Timer1_Timer() 'Timer1控件,Timer1.Interval=50
n = Int(Rnd * 20) '公鸡不可能超过20只
m = Int(Rnd * 40) '母鸡不可能超过40只
x = Int(Rnd * 130) '小鸡不可能超过130只
Form1.Caption = n & ":" & m & ":" & x
If (n * 5) + (m * 3) + (x * (1 / 3)) = 100 Then
Label1.Caption = "公鸡:" & n '
Label2.Caption = "母鸡:" & m
Label3.Caption = "小鸡:" & x

Timer1.Enabled = False
End If
End Sub

/images/2011/147787/2011051411021524.jpg" border="0" />
2007-03-28 17:48
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
楼上的厉害.真正的电脑解法.

我的msn: myfend@
2007-03-28 17:54
快速回复:[求助]有名的百鸡问题(我无从下手)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023794 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved