php通过排列组合实现1到9数字相加都等于20的方法,php排列组合
php通过排列组合实现1到9数字相加都等于20的方法,php排列组合
本文实例讲述了php通过排列组合实现1到9数字相加都等于20的方法。分享给大家供大家参考。具体实现方法如下:
<?php set_time_limit(0); /* 函数说明:huoqu_zhuhe($eq,$jiashu,$isone=0) 参数说明:$eq---几个数相加的总和; $jiashu-------加数数组:$jiashu=array(1,2,3,4,5,6,7,8,9),可以使用的加数; $isone---是否要每次使用不同的加数,唯一性,1是 0 不,默认1 返回类型:数组,数字以+相连的字符串:[0] => 3+8+9 [1] => 4+7+9 测试效果:1:对于加数数组比较小的,速度可以,过大的话,有些慢;2:每次可以使用不同的加数的,处理会变慢 采用的方法是:生成所有可能排列,对排列处理过滤重复的,得到组合 */ function huoqu_zhuhe($eq,$jiashu,$isone=1) {if(empty($jiashu)||!is_array($jiashu)){echo 'error:加数必须数组';return false;} $feishu=0; for($i=0;$i<count($jiashu);$i++){ if(!is_numeric($jiashu[$i])){$feishu=1;break;} } if($feishu==1){echo 'error;数组中必须是合法的数字';return false;} $lian=$jiashu; $savearr=array(); while(!empty($lian)){ //echo 1; $newarr=array(); $k=0; for($i=0;$i<count($lian);$i++){ $lianstr=$lian[$i]; $arr=explode('+',$lianstr); $nowhe=array_sum($arr); //echo $nowhe; for($j=0;$j<count($jiashu);$j++){ $savestr=$lianstr.'+'.$jiashu[$j]; if($isone==1&&in_array($jiashu[$j],$arr))continue; if(($nowhe+$jiashu[$j])>$eq)break; else if(($nowhe+$jiashu[$j])==$eq){ $savearr[]=$savestr; } else{$newarr[$k]=$savestr;$k++;} }//end for($j=0;$j<count($jiashu) }// end for($i=0;$i $lian=$newarr; }//end while(!empty($lian)) //print_r($savearr); //生成组合部分,过滤重复,2个数组以一个为参考,看另一个是否能通过移动达到匹配,可以,过滤 $isguolu=array();//存储对应的id的取舍 0取 1舍 for($i=0;$i<count($savearr);$i++){ $isguolu[]=0; }//初始化全部0 for($i=0;$i<count($savearr);$i++){ $arr1=explode('+',$savearr[$i]); $len1=count($arr1); for($j=$i+1;$j<count($savearr);$j++){ $arr2=explode('+',$savearr[$j]); $len2=count($arr2); if($len1!=$len2)continue; if($isguolu[$j]==1)continue; //比较$arr1和$arr2开始 $jishu=0; for($i1=0;$i1<count($arr1);$i1++){ $a=$arr1[$i1]; $isyou=0; for($i2=$i1;$i2<count($arr2);$i2++){ if($a==$arr2[$i2]){ $jishu++; $isyou=1; $t=$arr2[$i1]; $arr2[$i1]=$arr2[$i2]; $arr2[$i2]=$t; break; } }//end for($i2=0 if($isyou==0)break; }// end for($i1=0;$i1<count($arr1); if($jishu==$len1)$isguolu[$j]=1; }//end for($j=$i+1; }//end for($i=0;$i<count($savearr);$i++) //print_r($isguolu); //根据过滤数组选择 $newarr=array(); for($i=0;$i<count($savearr);$i++){ if($isguolu[$i]==0)$newarr[]=$savearr[$i]; } //print_r($newarr); return $newarr; } //下面是一个测试 //取用1,2,3,4,5,6,7,8,9相加所有等于20的组合 $jiashu=array(1,2,3,4,5,6,7,8,9); $eq=20; if($jieguo=huoqu_zhuhe($eq,$jiashu,1))print_r($jieguo); ?>
运行结果如下:
Array ( [0] => 3+8+9 [1] => 4+7+9 [2] => 5+6+9 [3] => 5+7+8 [4] => 1+2+8+9 [5] => 1+3+7+9 [6] => 1+4+6+9 [7] => 1+4+7+8 [8] => 1+5+6+8 [9] => 2+3+6+9 [10] => 2+3+7+8 [11] => 2+4+5+9 [12] => 2+4+6+8 [13] => 2+5+6+7 [14] => 3+4+5+8 [15] => 3+4+6+7 [16] => 1+2+3+5+9 [17] => 1+2+3+6+8 [18] => 1+2+4+5+8 [19] => 1+2+4+6+7 [20] => 1+3+4+5+7 [21] => 2+3+4+5+6 )
希望本文所述对大家的php程序设计有所帮助。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

上位10の暗号通貨取引プラットフォームには、1。Okx、2。Binance、3。Gate.io、4。Kraken、5。Huobi、6。Coinbase、7。Kucoin、8。Crypto.com、9。Bitfinex、10。Gemini。プラットフォームを選択する際には、セキュリティ、流動性、処理料、通貨選択、ユーザーインターフェイス、カスタマーサポートを考慮する必要があります。

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

トップ10仮想通貨取引プラットフォーム2025:1。OKX、2。BINANCE、3。GATE.IO、4。Kraken、5。Huobi、6。Coinbase、7。Kucoin、8。Crypto.com、9。Bitfinex、10。Gemini。プラットフォームを選択する際には、セキュリティ、流動性、処理料、通貨選択、ユーザーインターフェイス、カスタマーサポートを考慮する必要があります。

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

安全で信頼できるデジタル通貨プラットフォーム:1。OKX、2。Binance、3。Gate.io、4。Kraken、5。Huobi、6。Coinbase、7。Kucoin、8。Crypto.com、9。Bitfinex、10。Gemini。プラットフォームを選択する際には、セキュリティ、流動性、処理料、通貨選択、ユーザーインターフェイス、カスタマーサポートを考慮する必要があります。

トップ10仮想通貨取引アプリのランキング:1。OKX、2。Binance、3。Gate.io、4。Kraken、5。Huobi、6。Coinbase、7。Kucoin、8。Crypto.com、9。Bitfinex、10。Gemini。プラットフォームを選択する際には、セキュリティ、流動性、処理料、通貨選択、ユーザーインターフェイス、カスタマーサポートを考慮する必要があります。

推奨される安全な仮想通貨ソフトウェアアプリ:1。Okx、2。Binance、3。Gate.io、4。Kraken、5。Huobi、6。Coinbase、7。Kucoin、8。Crypto.com、9。Bitfinex、10。Gemini。プラットフォームを選択する際には、セキュリティ、流動性、処理料、通貨選択、ユーザーインターフェイス、カスタマーサポートを考慮する必要があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
