问题:用n元钱去买100只鸡,其中母鸡5元一只,公鸡3元一只, 小鸡3只一元,有哪几种购买组合
解决思路: 首先要列出方程式,假设购买了母鸡x只,公鸡y只,小鸡z只,列出下面2个方程式
1. x + y + z = 100
2. 5x + 3y + z/3 = n
综合以上两个表达式得出: 14x + 8y =3n-100 ,这是个二元一次方程,x ,y都是不大于100的整数,
利用枚举算法可以分别求出x, y ,z的值
以下是用ruby实现的代码:
puts("Please input the amount:")
n = gets()
for x in 0..100
for y in 0..100
if (14*x + 8*y) <= 3*n.to_i - 100 then
puts("x = #{x}, y = #{y}, z = #{100-x-y}")
else
break
end
end
end
输入: 40
运行结果:
x = 0, y = 0, z = 100
x = 0, y = 1, z = 99
x = 0, y = 2, z = 98
x = 1, y = 0, z = 99