/*
1. まず、多くの人が C を学習していたときに本で楽しく描いたことがあるでしょう。PHP でその半分を描いてみましょう。
アイデア: 行数ごとに 1 回、その後、内部のスペースとアスタリスクに対して 1 回。
*/
for($i=0;$i<=3;$i++){
for($j=0;$j<=3-$i;$j++){
echo ' ';
}
for($k=0;$k<=2*$i;$k++){
echo '*' }
echo '
';
2. C の基本アルゴリズムであるバブル ソートは、一連の数値を小さいものから大きいものへと並べ替えます。
$arr = 配列(3, 2, 1);
$n = count($arr);
//ループするたびに、後続のソートを実行します
for($j=0; $j/ /最後にソートされなかったものについては、ループして最大(最小)のものを見つけ、ソート処理を実行します
for($i=$j; $i<$n-1; $i++) {
if($ arr [$ j]&gt; $ arr [$ i+1]){
= $ t;
。
アイデア: 各行の最初と最後の桁は 1 で、中央は最初の桁と左の行の合計です。このアルゴリズムは 2 次元配列に保存されます。次元配列を使用する実装も可能で、出力は行ごとに行われます。興味がある場合は、それを書いて遊んでみてください。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
*/
//各行の最初と最後 両方とも1の場合は6と書きます行
for($i=0; $i<6; $i++) {
$a[$i][0]=1;
$a[$i][$i]=1;
}
/ /最初と最後の値を抽出して配列に保存
for($i=2; $i<6; $i++) {
for($j=1; $j<$i; $j++) {
$a[$i][$j] = $a[$i-1][$j-1]+$a[$i-1][$j];
//
を印刷 ($i= 0; $i<6; $i++){
echo $a[$i][$j ].' ';
}
echo '
';
}
/*
4. 数値のセットでは、数値を挿入し、元の順序で挿入し、元の並べ替え方法を維持する必要があります。
アイデア: 挿入する数値より大きい位置を見つけて置き換え、次の数値を 1 つ戻します。
*/
$in = 2;
$arr = array(1,1,1,3,5,7);
$n = count($arr);
//挿入する数値が最大の場合は直接出力
if ($arr[$n-1] < $in) {
$arr[$n+1] = $in; print_r($arr);
}
for($i=0; $i< $n ; $i++) {
//挿入する位置を見つける
if($arr[$i] >= $in){
$t1= $arr[$i];
$arr[$i] = $ in;
//次のデータを 1 桁シフトします
[$j] = $t1;
$t1 = $t2; アルゴリズム)。
アイデア: 1 回の並べ替えで 2 つの部分に分割し、次に 2 つの部分を再帰的に並べ替えて、最後に結合します。
*/
function q($array) {
if (count($array) <= 1) {return $array;}
//$keyを境界として、2つの部分配列に分割します
$ key = $array [0];
$l = array();
$r = array();
//それぞれ再帰的ソートを行った後、配列
を合成します($i=1; $i< count($array); $i++) {
if ($array[$i] <= $key) { $l[] = $array[$i] }
else { $r[] = $array[ $i]; }
}
$l = q($l);
$r = q($r);
return array_merge($l, array($key), $r);
}
$arr = array(1,2 ,44,3,4,33);
print_r( q($arr) );
/*
6. 配列内で必要な要素を見つけます (二分探索アルゴリズム)。
アイデア: 配列内の特定の値を境界として使用し、最後まで再帰的に検索します。
*/
function find($array, $low, $high, $k){
if ($low <= $high){
$mid = intval(($low+$high)/2);
if ($ 配列 [$ ミッド] == $ k) {
リターン $ MID
} elseif ($ k & lt; $ 配列 [$ ミッド]) {
リターン 検索 ($ 配列, $ ロー, $ ミッド 1, $、$、k);
, $array = array(2,4,3,5);
$n = count($array) ;
$r = find($array,0,$n,
/*
7. 複数の配列を結合します。array_merge() は必要ありません。質問はフォーラムからのものです。
アイデア: 各配列を走査し、新しい配列を再編成します
*/
function t(){
$c = func_num_args()- 1;
$a = func_get_args( );
//print_r($a);
for($i=0; $i<=$c; $i++){
if(is_array($a[$i]) ){
for($j= 0; $j
';
$a = array_merge(range(1) ,4),range(1,4),range(1,4));
print_r($a);
/*
8、 丑年に牛を頼む:多産になる牛がいます4歳になると毎年1頭の牛が生まれ、その子孫はすべて同じ牛になります。15歳になると不妊手術を受け、20歳になると死亡します。 n年? (フォーラムより)/*/
Function T ($ n) {
static $ num = 1
for ($ j = 1; $ j & lt; = $ n; $ j ++) {
if ($ j & gt; = 4 && $j If($j==20){$num--;}
}
return $num;
}
//テスト
echo t(8);