一个整数数组,长度为 n,将其分为 m 份,使各份的和相等,求 m 的最大值★★ 雅虎(运算、矩阵)

给定一个整数数组,目标是将其分成尽可能多的份,要求每份的和相等。该问题与将兔子放入笼子中保持每个笼子重量相同类似。提供了一个函数,接受兔子重量数组和笼子数作为参数,判断是否可以实现均分。测试案例表明,对于特定输入,函数能够正确判断能否均分并返回结果。
摘要由CSDN通过智能技术生成

将总数和各自重量都已知的兔子放进n个笼子中,最终每个笼子的重量相同
请用一个函数实现:
参数:兔子重量的数组和笼子数
提示:兔子重量为正整数,不许杀兔兔

测试例子1:

输入:[2,2,3,3,5] , 3
输出:ok

测试例子2:

输入:[3,5,5,6,7] , 4
输出:no

上代码:
 

$arr = [2, 2, 3, 3, 5];
//$arr = [3, 5, 5, 6, 7];
$num  = 3;

function main($arr, $num)
{
    if(maxShares($arr, count($arr)) == $num) {
        echo 'ok';
    } else {
        echo 'no';
    }
}

main($arr, $num);

function maxShares($a, $n)
{
    $aux = [];

    $sum = array_sum($a);

    for ($m = $n; $m >= 2; $m--) {
        if ($sum % $m != 0)
            continue;

        for ($i = 0; $i < $n; $i++)
            $aux[$i] = 0;

        if (testShares($a, $n, $m, $sum, $sum / $m, $aux, $sum / $m, 1)) {

   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值