ホームページ >バックエンド開発 >PHPチュートリアル >アルゴリズム関連の小さな質問

アルゴリズム関連の小さな質問

WBOY
WBOYオリジナル
2016-06-13 12:17:37884ブラウズ

小さなアルゴリズムの問​​題
たとえば、電話料金をリチャージする場合、10 元以上リチャージすると 1 元の電話クレジットが得られ、50 元以上リチャージすると 5 元の電話クレジットが得られます。 。

それで、この時、私は 51 元の電話クレジットをチャージしました。なぜ、5 元の電話クレジットを獲得するために 50 元をヒットしたのに、この時点では、もう 1 元の電話クレジットを獲得できませんでした。 10元以上。

上司、見てみるのを手伝ってください

<br />$a = array('50'=>'5','10'=>'1');<br />$s = 51;<br />function test($s,$a){<br />	$flag = 0;<br />	foreach($a as $k=>$v){<br />		if($s >=$k){<br />			$flag=$v;<br />		}<br />	}<br />	return $flag;<br />}<br />echo test($s,$a);<br />

-----解決策のアイデア----- - -----
$a = array('50'=>'5','10'=>'1');<br />$s = 51;<br />function test($s,$a){<br />    $flag = 0;<br />    foreach($a as $k=>$v){<br />        if($s >=$k){<br />            $flag=$v;<br />            break; //这样比较规范(一个模块只有一个出口)<br />        }<br />    }<br />    return $flag;<br />}<br />echo test($s,$a);

------解決策のアイデア--------------------- -

引用:
$a が $a = array('40'=>'3','50'=>'5 に置き換えられた場合) ', '10'=>'1');
結果は 3 になります。このとき、51 は 50 より大きいため、5 になるはずです


<br />[code=php]$a = array('50'=>'5','10'=>'1');<br />$s = 51;<br />function test($s,$a){<br />    $flag = 0;<br />    foreach($a as $k=>$v){<br />        if($s >=$k){<br />if($flag<$v)           <br /> $flag=$v;<br />           <br />        }<br />    }<br />    return $flag;<br />}<br />echo test($s,$a);

[/code]

配列を不規則に並べるとこんな感じ
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。