[PHP] 공룡 조합(r종의 조합이냐, r종의 조합이냐)
nCr와 재회
그립다.
정말 그리워요.
그냥 보고 있으면
고등학교 수학이라는 녀석이 나올 줄은 몰랐어.
페이즈를 풀면 조합이 필요할 때가 있어요.
비망록으로 7가지 중 10가지를 조합하거나 1부터 10까지의
조합을 원할 때 총결산을 하기로 했습니다.
2. 코드
공룡 일람표가 표시되면 드롭다운 단추와 라디오 단추를 통해 출력 항목을 선택하고'확인 단추'를 누르십시오.
숫자(1,2,3)에서 두 숫자의 조합은 (12,13,23)이다.
여기서 주의해야 할 것은 1위의 수치보다 큰 수치를 뒤에 만들면 된다는 것이다.
get_combi1에서 이 성질을 이용하여 제작합니다.
combi_php2.php
<!DOCTYPE html>
<html lang="ja">
<meta charset="utf-8">
<title>組み合わせ</title>
<h1>組み合わせ</h1>
<?php
$array_dino=['Tyrannosaurus','Velociraptor','Stegosaurus','Indoraptor','IndominusRex','Triceratops','Brachiosaurus'];
?>
<form action="combi_php2.php" method="post">
<?php
echo "恐竜一覧:<br>";
for($i=0;$i<count($array_dino);$i++){
echo $array_dino[$i]."<br>";
}
?>
<select name="type_num">
種類:
<?php
for($i=1;$i<count($array_dino);$i++){
echo "<option>".$i."</option>";
}
?>
</select>
<input type="radio" name="radio_d" value="all_combi" checked>総組み合わせ
<input type="radio" name="radio_d" value="combi">組み合わせ
<input type="submit" value="確定" name="btn2">
</form><br>
<?php
$dnum=isset($_POST['type_num'])?htmlspecialchars($_POST['type_num']):null;
$input_num=count($array_dino);
$flg=0;
$arr_all_comb=[];
$arr_comb2=[];
for($i=0;$i<$input_num;$i++){
$arr_all_comb[]=$i;
$arr_comb2[]=$i;
}
for($i=0;$i<$dnum-1;$i++){
$str_join=join(" ",$arr_comb2);
$retstr=get_combi1($input_num,$str_join);
$arr_split=explode(" ",$retstr);
$arr_comb2=[];
for($j=0;$j<count($arr_split);$j++){
//$i+1種類までの組み合わせ
$arr_all_comb[]=$arr_split[$j];
//$i+1種類の組み合わせ
$arr_comb2[]=$arr_split[$j];
//echo $arr_split[$j]."<br>";
}
}
if(isset($_POST['btn2'])){
if($_POST['radio_d'] == "all_combi"){
echo $dnum."種類までの組み合わせを表示<br>";
for($i=0;$i<count($arr_all_comb);$i++){
//echo $arr_all_comb[$i]."<br>";
echo replace_word($arr_all_comb[$i],$array_dino)."<br>";
}
}else{
echo $dnum."種類の組み合わせを表示<br>";
for($i=0;$i<count($arr_comb2);$i++){
//echo $arr_comb2[$i]."<br>";
echo replace_word($arr_comb2[$i],$array_dino)."<br>";
}
}
}
function get_combi1($n,$str_j){
$tmp_ar=[];
$arr_s=explode(" ",$str_j);
for($i=0;$i<count($arr_s);$i++){
//$num=substr($arr_s[$i],strlen($arr_s[$i])-1,1);
$num_arr=explode(",",$arr_s[$i]);
//一番最後の要素
$num0=$num_arr[count($num_arr)-1];
//echo $num0."<br>";
for($j=$num0+1;$j<$n;$j++){
$retstr=$arr_s[$i].",".$j;
$tmp_ar[]=$retstr;
}
}
$join_str=join(" ",$tmp_ar);
//echo $join_str."<br>";
return $join_str;
}
function replace_word($str0,$arr_rep){
$ar_in=explode(",",$str0);
$tmp_ar=[];
for($i=0;$i<count($ar_in);$i++){
for($j=0;$j<count($arr_rep);$j++){
if($ar_in[$i] == $j){
$tmp_ar[]=$arr_rep[$j];
break;
}
}
}
return join(",",$tmp_ar);
}
?>
</html>
실행 예
조합 선택 시 (4 가지)
어느 수까지의 조합(총 조합)을 선택할 때
Reference
이 문제에 관하여([PHP] 공룡 조합(r종의 조합이냐, r종의 조합이냐)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/knowledge87sun/items/283f436519fc98f794b9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)