• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > 程序面试算法问题

程序面试算法问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了程序存储问题贪心算法,1.1算法与程序框图,遗传算法matlab程序,算法与程序框图,粒子群算法matlab程序等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:程序面试算法问题
描述:

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

9
31
3121
3906

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


解决方案1:

为什么是3121呢?如果答案是3121,那么第一次平均分,每个人得到的鱼是(3121-1)/5=624,A拿着624条鱼走了,B醒来,有鱼624条,怎么分成5份还剩一条???这里就走不通了


我算出的答案是3131
第一次分,A拿走(3131-1)/5=626条,
第二次分,B拿走(626-1)/5=125条,
第三次分,C分鱼之前,鱼的数量是A第一次分的鱼626加上B第二次分的鱼125条,即分过之后的鱼数量是(626+125-1)/5=150条
第四次分,D目前手中的鱼是A+B+C给的鱼总和,也就是(626+125+150),分过之后(626+125+150-1)/5=180
第五次类似,E目前有的鱼A+B+C+D(即626+125+150+180),分过之后(626+125+150+180-1)/5=216

解决方案2:

public static void main(String[] args) {
    int n = 0;
    while (!check(n++));
    System.out.println(n-1);
}

public static boolean check(int x) {
    for (int i = 0; i < 5; i++) {
        if (--x % 5 == 0) x -= (x / 5);
        else return false;
    }
    return x >= 0;
}

解决方案3:

function cal(total, i, result) {
  if(i > 5) return result;
  if(total < 0 || !Number.isInteger((total - 1) / 5)) return false;

  result.push((total - 1) / 5);
  var left = 4 * (total - 1) / 5;
  return cal(left, i + 1, result);
}

var x = 5;
var ret = cal(x, 1, []);
while(ret === false) {
  x = x + 1;
  ret = cal(x, 1, []);
}
console.log(x); //3121
console.log(ret); //[ 624, 499, 399, 319, 255 ]

解决方案4:

面试的基本程序,公务员面试程序,面试程序表,微软面试程序,招聘面试程序,阿斯利康的面试程序,国航面试程序,面试操作程序,面试程序ppt,结构化面试的程序,面试考试程序,达富面试程序,移动面试程序,博士后面试程序,程序面试必

老实说我觉得这个问题理解语义的难度大于算法的难度...

解决方案5:

/**
     * 设第一个人分鱼时总数为a1,每人人分的k1,有:t1 = 5*k1+1.剩下的鱼为t2 = t1-k1-1;
     * 同理,第二个人鱼时有 t2 = 5*k2+1;
     * 结合以上,得出k1 = (5*k2+1)/4,同时要满足k1,k2为整数.
     * 假设最后每人平分数为k5=t,递归的到k1,就可求出总数
     */
        public static void main(String... args) {
            int k = 1;
            int t = k;
            int i = 0;
            while (i < 5){
                if((t*5+1) % 4 == 0){
                    t = (t*5+1)/4;
                }else {
                    t = ++k;
                    i = 0;
                }
                i++;
            }
            System.out.println(5*t+1);
        }

解决方案6:

你算的等于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


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Flask-sqlalchemy一对多存储问题
  • 程序面试算法问题

相关文章

  • 2017-06-07 flask创建数据库失败
  • 2017-06-07 七牛列举资源结果是按照什么排序的
  • 2017-06-07 怎样设计Rectangle和Square类才能使之满足OOP的Liskovsubstitution原则
  • 2017-06-07 (redis)mysqlmemory存储引擎
  • 2017-06-07 使用sbt的eclipse插件配置开发环境碰到的问题
  • 2017-06-07 七牛的防盗链空的Referer现在怎么设置
  • 2017-06-07 uWSGI是什么?为什么pythonweb开发经常会提到它?
  • 2017-06-07 jboss+spring错误,紧急求解!
  • 2017-06-07 Web架构选择
  • 2017-06-07 (VFP)GDI+处理后的图如何直接在Image控件上显示

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • (python)mysql的数据库编码指的是哪里的编码?
    • php正则问题
    • PHPCURL如何支持传多维数组?
    • 拿了一位大神写的例子,可是新手看不懂。求给一些注释!!!
    • Python:是否应该尽量使用unicode
    • 求助,关于mac终端用户名和在线用户的问题!
    • Python正则获取字符的问题
    • 谁做过关于RFID的项目,指教一下。
    • 已经上传的图片,不修改文件名,重新上传,多久能起作用?
    • python爬虫(python)类的方法转换为列表表达式

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有