面试题14:剪绳子
Posted xlzfdddd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题14:剪绳子相关的知识,希望对你有一定的参考价值。
<?php header("content-type:text/html;charset=utf-8"); /* * 剪绳子 把一根绳子剪成多段,并且使得每段的长度乘积最大。 P96 */ //动态规划 function integerBreak1($length){ if($length < 2){ return 0; } if($length == 2){ return 1; } if($length == 3){ return 2; } $products = array(); $products[0] = 0; $products[1] = 1; $products[2] = 2; $products[3] = 3; for($i=4;$i<=$length;$i++){ $max = 0; for($j = 1;$j<$i;$j++){ $product = $products[$j] * $products[$i-$j]; if($max < $product){ $max = $product; } $products[$i] = $max; } } return $products[$length]; } //贪心算法 function integerBreak2($length){ if($length < 2){ return 0; } if($length == 2){ return 1; } if($length == 3){ return 2; } $timesOf3 = floor($length / 3); if($length - $timesOf3 * 3 == 1){ $timesOf3--; $timesOf2 = ($length - $timesOf3 * 3)/2; } return (pow(3,$timesOf3) * pow(2,$timesOf2)); } echo integerBreak1(10); echo integerBreak2(10);
以上是关于面试题14:剪绳子的主要内容,如果未能解决你的问题,请参考以下文章