问题分析
- 最暴力的解法就是把所有的组合都找出来, 然后排序得到最大值(或者最小值),这样还搞什么算法,直接抛弃.
- 这个问题的思路为: 在一个数组中依次选出最合适的值放在结果中. 那么问题就变成了如何选出最合适的值, 下面以求最大值为例说明:
- 对于两个数比较, 首先要考虑的就是位数的差异, 比如 9和 10 从值的大小比较, 那应该是10胜出, 但是 109 肯定没有 910大. 所以比较的时候要把位数作为判断的依据.
- 考虑了位数之后, 我们就来比较数字的大小:位数相同的, 数值大 的作为最合适的值 , 例如 9和8比较, 9胜出;
- 位数不同的, 以位数少的为基准, 从左到右逐位 比较. 位值大的胜出, 例如: 9和88比较, 9胜出; 位值相同的, 位数少的胜出,例如: 99和990比较, 99胜出.
- 这样下来每次选择的都是 最合适的值 ,依次组合的结果也就是我们想要的最大值.
下面是代码 php
function get_max($arr)
{
$res =