首頁 > 後端開發 > php教程 > 一个分拆数组的算法

一个分拆数组的算法

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-06-06 20:40:34
原創
1018 人瀏覽過

现有如下需求:首先有个数组$arr = array(1 => 12, 2 => 23);现在要将该数组进行拆分,生成一个新的数组,新数组的个数如下:

<code>$newArr = array(
    array(2, 7),
    array(2, 7),
    array(2, 9),
    array(1, 3),
    array(1, 9),
)
</code>
登入後複製
登入後複製

必须满足一下条件:
1:新数组必须是有5项;
2:必须按照原有数组中最大的值来进行先拆分,然后次大值。。。,至于每项要拆分成多少个,自行决定,
3:拆分后的数组二维中的第一个值为原有的key,值为拆分后的数值,二维中第一个值相同的加起来必须等于原来数组的key对应的值。

回复内容:

现有如下需求:首先有个数组$arr = array(1 => 12, 2 => 23);现在要将该数组进行拆分,生成一个新的数组,新数组的个数如下:

<code>$newArr = array(
    array(2, 7),
    array(2, 7),
    array(2, 9),
    array(1, 3),
    array(1, 9),
)
</code>
登入後複製
登入後複製

必须满足一下条件:
1:新数组必须是有5项;
2:必须按照原有数组中最大的值来进行先拆分,然后次大值。。。,至于每项要拆分成多少个,自行决定,
3:拆分后的数组二维中的第一个值为原有的key,值为拆分后的数值,二维中第一个值相同的加起来必须等于原来数组的key对应的值。

余兴节目。我就直接粘答案了。技巧:

  1. 想象成一个线段,在上边随机选若干个点将其切断。统计每一段的长度相加起来就必然是正确的和值。
  2. 题目不禁止结果中出现0,所以选点的时候允许重复。
  3. 和值为负的时候,翻转成正的处理。
<code><?php header("Content-Type: text/plain; ");

$input = [1 => 12, 2 => 23];
$input = [1 => 0, 2 => 0];
define("TOTAL_SEGMENTS", 5);

$input_sorted = $input; 
asort($input_sorted);

$segment_counts = [];
$segment_counts[0] = mt_rand(1, TOTAL_SEGMENTS - 1);
$segment_counts[1] = TOTAL_SEGMENTS - $segment_counts[0];

$result = [];
for ($i_slice = 0; $i_slice </code>
登入後複製
相關標籤:
php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
怎麼學好php
來自於 1970-01-01 08:00:00
0
0
0
PHP擴充intl
來自於 1970-01-01 08:00:00
0
0
0
php數據獲取?
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板