ホームページ  >  記事  >  バックエンド開発  >  初心者さん、アルゴリズムの書き方を教えてください

初心者さん、アルゴリズムの書き方を教えてください

WBOY
WBOYオリジナル
2016-06-23 14:01:51811ブラウズ

主な理由:

現在 PHP を学習中ですが、サッカーの試合の 1 サイクルのスケジュールを作成して自分自身をテストしたいと思っています。

アルゴリズム:

*アルゴリズム
チームを 2 列 (偶数チーム) に配置し、1 列目の 1 番目のチームを固定し、1 列目の 2 番目のチームから時計回りにローリングを開始します。

しかし、コードを書いているときは理解できませんでした(初心者だからかもしれません)

私が想像した書き方は次のようになります:

3 層の for ループ、最初の層はラウンド、2番目のレベルはホームチーム、3番目のレベルはアウェイチームです。
エコーを実行してスケジュールを表示します。

以下のコードは調査中に私が書いたものですが、私が望んでいた結果とは全く異なります。PHP の専門家に教えていただければ幸いです。

<?php	$team = array('武汉','广州','北京','上海','四川','香港','台湾');	//var_dump($team);	$max = count($team);	//var_dump($max);	$teammax = $max - 1 ;	for ($i=0;$i<$max;$i++)	{		for ($o=0;$o<=$teammax;$o++)		{			if ($i == $o)			{				continue;			}				else			{			echo $team[$i] . ' vs ' . $team[$o];			if ($o == $teammax){				echo "<hr>";			}			else{			echo "<br/>";		}	}		}	}?>


<?php	$team = array('1','2','3','4','5','6','7','8');	$max = count($team);	//var_dump($max);	$lunci = $max - 1;	//var_dump($lunci);	for ($i=0;$i<$lunci;$i++)	{		echo $team[$w] .' vs ' . $team[$b-$i];		echo '<br/>';	}?>


ディスカッションに返信 (解決策)

7 つのうち 2 つの組み合わせを探しています
組み合わせの一般的なアルゴリズムに従ってください (本質領域に関連するコードがあります)

Iルールを理解できません。あなたが望む結果を示すために結果の例を示してもらえますか? こうすることで、他の人があなたが望む結果が何であるかをよりよく知ることができます

自分で調べれば、武漢 vs 広州のように書くことができます。
武漢 vs 北京
武漢 vs 上海
武漢 vs 四川
武漢 vs 香港
武漢 vs 台湾
---------------------------- ----------- -------------------------------------- ---
広州 vs 北京
広州 vs 上海
広州 vs 四川
広州 vs 香港
広州 vs 台湾
------------------------ ----------------- --------------------------------- ---------
北京vs上海
北京vs四川
北京vs香港
北京vs台湾
--------------------- --------------------- ---------------------------- ----------
上海vs四川
上海vs香港
上海vs台湾
-------------------------- ------------------------ ---------------------------- ----
四川 vs 香港
四川 vs 台湾
--------- ------------------------- ------------------------ ------------------------
香港 vs 台湾
------------------------ ------------------- ----------------------------- ------

ルールがよくわかりません。あなたが望む結果を他の人がよりよく理解できるように、結果の例を示しますか?
強度の結果は
1 ラウンド
を意味します
1234
5678
上下
1523
6784
1652
7843

コンパスアルゴリズムの演算を形成する(固定1回転2~8)

自分で勉強すれば、このように

$team = array('武汉','广州','北京','上海','四川','香港','台湾');$max = count($team);$teammax = $max - 1 ;for ($i=0;$i<$max;$i++) {  for ($o=$i+1;$o<=$teammax;$o++) {    if ($i == $o) {      continue;    }else {      echo $team[$i] . ' vs ' . $team[$o];      if ($o == $teammax){        echo "<hr>";      } else{        echo "<br/>";      }    }  }}
を書くことができます 武漢vs広州

武漢vs北京

武漢vs上海
武漢vs四川
武漢vs香港
武漢vs台湾
--------------- ------ --------------------------------------- -
広州 vs 北京
広州vs上海
広州vs四川
広州vs香港
広州vs台湾
---------------------------- ----- ----------------------------------------------- --
北京 vs上海
北京vs四川
北京vs香港
北京vs台湾
--------------------------------- - -------------------------------------------------
上海vs四川
上海vs香港
上海vs台湾
------------------------------------- ----------------------------------------------------
四川vsホン孔
四川vs台湾
-------------------------------------- ------ -----------------------------
香港 vs 台湾
------- -------- -------------------------------------- -------- ----------------

こんにちは、モデレーター、以前にもこのように書きましたが、最終的な結果は私が望むものとは異なります。

私が考えるのは

第一ラウンド
1234
5678
第二ラウンド
1523
6784
第三ラウンド
1652
7843
このアルゴリズム 0.0 については以下同様です

$ arr = 配列(4,3 ,2,1 ,5,6,7,8);

$round = 0; //ラウンドを設定します

$arr1 = array_merge($arr, $arr);
echo $arr1[ $round], $arr1[$round+1],$arr1[$round+2],$arr1[$round+3]


这个意思?

$ar = array(1, 2, 3, 4, 5, 6, 7, 8);$len = count($ar);for($i=1; $i<$len; $i++) {  foreach(array_chunk($ar, $len/2) as $v) {    echo join('', $v), PHP_EOL;  }  $t = array_splice($ar, 1, 1);  $ar = array_merge($ar, $t);  echo PHP_EOL;}
1234
5678

1345
6782

1456
7823

1567
8234

1678
2345

1782
3456

1823
4567

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