编程题分享:有⼀堆糖果,其数量为n,现将糖果分成不同数量的堆数

这篇具有很好参考价值的文章主要介绍了编程题分享:有⼀堆糖果,其数量为n,现将糖果分成不同数量的堆数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 背景
    近期面试遇到一家公司的编程题,觉得挺有参考价值
    此处使用 PHP语言,进行编码测试,
    编码之前要进行思路分析,避免无头苍蝇,走一步看一步
    最后,希望后期面试顺利!欢迎指摘 .

  • 题目:

	编程题:
	有⼀堆糖果,其数量为n,
	现将糖果分成不同数量的堆数(每堆数量均为整数,最少为1),
	请算出糖果堆对应数量的最⼤乘积是多少,并给出对应的分配⽅案;
	举例:糖果数量为8,可以得到的乘积最⼤为18,对应的分配⽅案为【2,3,3】;
  • 思路分析:

初始测试数据比较小,可以在草稿纸上穷举分配方案,寻找规律,发现:文章来源地址https://www.toymoban.com/news/detail-512427.html

  1. 当数量小于5时,最大的乘积就是本身,无需分配
  2. 其次注意到分配后的数目如果是1则毫无意义,
  3. 同时穷举发现,越靠近数字3,乘积越大,得到的分配方案最符合要求
  4. 所以算法重点处理数量大于5的情况
    首先获取除3的整数部分 $count, 和取模数字 $mod
    根据变量 $count ,判断乘积,for 循环处理,并得到每个分配数字
    分析 $mod 变量的影响,使得分配数尽可能靠近数字 3
    最后,简单测试数量 n,验证分配方案是否符合实际要求 .
  • 编码如下:
**
 * 有⼀堆糖果,其数量为n,现将糖果分成不同数量的堆数
 * @param int $z_number 糖果数量
 * @return string 检测结果
 */
public function zingFunc($z_number = 0){
    //检验数据规范性
    $res_msg = '分配数字为:'.$z_number;
    //最大乘积
    $max_result = 1;
    //方案分配
    $option_msg = '';
    if (is_int($z_number)&& $z_number > 0){
        if ($z_number < 5){
            $max_result = $z_number;
            $option_msg = $z_number;
        }else{
            //整数大于5,详细分析
            //取商的整数
            $count = intval($z_number/3);
            //除3取模
            $mod = $z_number%3;
            $arr_option = [];

            if ($mod == 0){
                //此时正好是统一分配
                for ($i=0;$i<$count;$i++){
                    $max_result*=3;
                    $arr_option[] = 3;
                }
            }elseif ($mod == 1){
                //对其中的一个分配数加1
                for ($i=0;$i<$count-1;$i++){
                    $max_result*=3;
                    $arr_option[] = 3;
                }
                $max_result *=4;
                $arr_option[] = 4;
            }else{
                //余数为2的时候,可以对前面取两堆,分别加1
                for ($i=0;$i<$count-2;$i++){
                    $max_result*=3;
                    $arr_option[] = 3;
                }
                $max_result *=4;
                $max_result *=4;
                $arr_option[] = 4;
                $arr_option[] = 4;
            }
            $option_msg = implode(',',$arr_option);
        }
        $res_msg .= ',最大乘积为:'.$max_result.',方案分配为:【'.$option_msg.'】';
    }else{
        $res_msg .= ',数据输入不是正整数';
    }
    //echo('<br>'.$res_msg);
    return $res_msg;
}
  • 测试截图:
    编程题分享:有⼀堆糖果,其数量为n,现将糖果分成不同数量的堆数

到了这里,关于编程题分享:有⼀堆糖果,其数量为n,现将糖果分成不同数量的堆数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何使用不同的方法和命令来检查 Ubuntu 中的 CPU 数量?

    在使用 Ubuntu 操作系统时,了解系统中的 CPU 数量对于优化系统性能和资源分配非常重要。通过检查 CPU 数量,我们可以了解系统的处理能力和并发性,并根据需要进行适当的配置和优化。本文将详细介绍如何使用不同的方法和命令来检查 Ubuntu 中的 CPU 数量。 lscpu 命令是一个

    2024年02月07日
    浏览(36)
  • Python统计全球星巴克门店的数据及在不同国家和地区门店数量可视化(超详细 附源码)

    需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 下面对一组关于全球星巴克门店的统计数据,分析了在不同国家和地区以及中国不同城市的星巴克门店的数量 首先查看星巴克旗下有哪些品牌,如果我们只关心星巴克咖啡门店,则只需要获取星巴克中Brand的数据集,并查

    2024年02月06日
    浏览(35)
  • 【Unity URP渲染管线下设置灯光数量上限_灯光不显示问题案例分享】

    1.我的这个项目是在URP渲染管线下,我在场景里创建了六个点灯,转动物体的时候,发现灯显示不全,会一闪一闪的出现。 2.在RenderPipelineAsset配置文件中查看灯光数量上限,首先在EditProject Setting 3.在Project Setting里选Quality,在Rendering找到UniversalRP Asset 4.选中UniversalRP Asset文件

    2024年02月16日
    浏览(36)
  • 多种编程语言运行速度排名-10亿次除7求余数为0的数量

    最佳方式是运行10次,取平均数,用时秒数显示3位小数。 因为第一次打开,可能CPU还没优化好,多次取平均,比较准确 第1次共10次,用时3秒,平均3秒 第2次共10次,用时4秒,平均3.5秒 我主要是研究相同的函数,相同的 算法,不同编程语言,哪个运行更快 问: 为啥要找7的

    2024年02月11日
    浏览(35)
  • vue中实现将html导出为word文档

    需求:将页面整成理想样式,将想要的那一部分页面导出成word,不用写模板,按照当前页面样式导出即可。(简易版) 保姆级别教程: 第一步:安装需要的依赖 第二步:给导出那部分的容器起个id名 第三步:在需要的地方引入依赖 第四步:获取dom节点myContainer并导出(我写

    2024年02月11日
    浏览(31)
  • 分享两组不同的3D VR卡片

    最近某音上出现了很多VR视频,转动手机可以看到手机界面未显示出来的场景。这种事情我觉得我们也可以做到。 所以两种不同的3D VR卡片来了: 第一种是横向或上下可以拖动极大的距离。卡片上的信息会随着拖动移动,但不会显示更多的信息: 第二种是横向或者上下拖动距

    2024年02月08日
    浏览(25)
  • vue中实现将页面或者div内容导出为pdf格式

    将Vue单页面转成pdf并下载 步骤1:下载对应的库 步骤2:创建一个htmlToPdf.js的js文件, 然后在main.js中全局引用一下,编写如下代码: 步骤三:在vue页面中给需要打印的区域一个div标签,然后给div一个id,id名和htmlToPdf.js中选择的名字一致,代码如下: 步骤四:在data节点中声明一

    2024年02月11日
    浏览(36)
  • Java中的堆和栈

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 Java数据类型在执行过程中存储在两种不同形式的内存中:栈和堆,它们通常由运行Java虚拟机(JVM)的底层平台维护。本文从Java软件开发的角度提供了对这两种内存类

    2023年04月08日
    浏览(34)
  • dijkstra的堆优化

    核心:priority_queue pairint,int 用优先队列来取最近的点,就不用遍历找点了 在pq中,是按pair的第一个元素(first)由大到小排序的,所以pair距离,点号,注意因为要的是最小值,所以距离要存负值 其实距离是纯纯的工具人,我们只是需要它来维持点的排序 每次取队首h,取出的

    2024年02月09日
    浏览(21)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包