PHPIN.NET

 找回密码
 立即注册
查看: 5457|回复: 0

[技巧手记] php一组数字分成两组,使他们的和最接近(和的差最小)

[复制链接]

34

主题

2

回帖

731

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
731
发表于 2021-3-4 12:01:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. <?php
  2. function groupTwo($arr) {
  3.     $n = count($arr);
  4.     $v = array();
  5.     $nice = array();
  6.     for($i = 1; $i < $n - 1; $i++ ) {
  7.         $group1 = [];
  8.         $group2 = [];
  9.         for($j = 0; $j < $n; $j++ ) {
  10.             $group1 = array_slice($arr, $j, $i, true);
  11.             $group2 = array_diff_key($arr, $group1);
  12.             $diff[] = abs(array_sum($group1) - array_sum($group2));
  13.             $all[] = array($group1, $group2);
  14.         }
  15.     }
  16.     asort($diff);
  17.     $zu = array_shift(array_keys($diff));
  18.     return $all[$zu];
  19. }

  20. $arr = [155,110,120,1300,140,150,160,170,180,190,1001,160,170,180,190,3001];
  21. $best = groupTwo($arr);

  22. print_r($best);
复制代码

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|PHPIN.NET ( 冀ICP备12000898号-14 )|网站地图

GMT+8, 2024-12-4 00:45

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表