经典算法_1_ 百鸡问题

问题:用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



                 

你可能感兴趣的:(数据结构和算法,算法,input,ruby)