程序面试算法问题

查看:91
本文介绍了程序面试算法问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

A,B,C,D,E五个人捕鱼后已凌晨,大家便睡觉。早上A第一个醒来,将鱼均分成五份,把多余的一条鱼扔掉,拿走自己的一份,B第二个醒来,也将鱼均分为五份,把多余的一条鱼扔掉,拿走自己的一份。CDE依次醒来,也按同样的方法拿鱼,问他们合伙至少捕了几条鱼。

9
31
3121
3906

在别的地方看到的面试题,自己算是3906,据说答案是3121,完全想不通,求教。

解决方案

你算的等于3906是按照 y=(x-1)/5这种方式迭代的吧?题目里面是每个人只是拿走了一份,并不是只留了一份。
考虑每个人分完都拿走了一份,剩下4份,公式应该是 y=4(x-1)/5
暴力代码如下:

function fish() {
    for(var j = 0; j < 10000; j++) {
        if(canSplit(j)) {
            console.log(j);
        }
    }
}

function canSplit(count) {
    for(var i = 0; i < 5;i++) {
        if((count - 1) % 5 === 0) {
            count = (count - 1) * 4 / 5;
        } else {
            return false;
        }
    }
    return true;
}

fish();

10000以内的三个结果是:
3121
6246
9371

这篇关于程序面试算法问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆