面试准备-其他算法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vivian_ll/article/details/88175705

百元百鸡

用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。
分析:不定方程

可以得出如下的不定方程,
x+y+z=100,
5x+3y+z/3=100,
下面再看看x,y,z的取值范围。
由于只有100文钱,则5x<100 => 0<x<20, 同理 0<y<33,那么z=100-x-y,

# 时间复杂度是O(N2)
for x in range(1,100):
    for y in range(1,100):
        z = 100 -x-y
        if (5*x+3*y+z/3==100) and z%3==0:
            print(x,y,z)

时间复杂度降为O(N):

class Program
    {
        static void Main(string[] args)
        {
            int x, y, z;

            for (int k = 1; k <= 3; k++)
            {
                x = 4 * k;
                y = 25 - 7 * k;
                z = 75 + 3 * k;

                Console.WriteLine("公鸡:{0}只,母鸡:{1}只,小鸡:{2}只", x, y, z);
            }

            Console.Read();
        }
    }

猜你喜欢

转载自blog.csdn.net/vivian_ll/article/details/88175705
今日推荐