about 7 years ago

在CSDN上看到一道创新工场面试题:

abcde五人打渔,打完睡觉,a先醒来,扔掉1条鱼,把剩下的分成5分,拿一份走了;b再醒来,也扔掉1条,把剩下的分成5份,拿一份走了;然后cde都按上面的方法取鱼。问他们一共打了多少条鱼,写程序和算法。

注意是每次分成五分,即使是最后一个人也是分成五分,然后拿走一分。

写了一个C#的版本:

static void Main(string[] args)
{
    int fishCount = 11;
    int personCount = 5;
    while (!Dispatch(fishCount, personCount))
    {
        fishCount += personCount;
    }

    Console.WriteLine("Fish Numbers:" + fishCount.ToString());
    Console.ReadLine();
}

public static bool Dispatch(int fishCount, int person)
{
    fishCount -= 1;

    if (fishCount % 5 != 0)
    {
        Console.WriteLine("{0} fished cannot be divided by 5 fish men", fishCount);
        return false;
    }
    else
    {
        if (person == 1)
            return true;
        return Dispatch(fishCount - fishCount / 5, person - 1);
    }
}

不过这种题目应该是给刚毕业的大学生的:)

← 最简单的清理维护Mac的方法 打开NSZombieEnabled来调试EXC_BAD_ACCESS →