php は本当に素晴らしいです。私が望むすべての機能を備えています。BS プログラムの中で最も気に入っているのは PHP と JSP です。以前に Java を少し勉強したことがありますが、これは素晴らしく完全な OOP ですが、「粗雑」すぎます。他にもプログラミング言語はたくさんありますが、問題をすぐに解決するのはほとんど不可能で、やるべきことが多すぎます。この点では PHP の方がはるかに優れていますが、多くの PHPER がアルゴリズムを無視しているのもこのためです。簡単に言えば、今日は最初のアルゴリズムに焦点を当てます
昨日、私は次のような問題に遭遇しました。最初の目的は、結合する部分です。私はかつてこのコードに似たコードを勉強したことがありますが、それを 7 回繰り返し見て、効率はもちろんのこと、目に星が見えたので、手紙を書きたいと思いました。まず第一に、それが効率的であること、そして第二に、私のニーズを満たせることです。次は CSDN のヘルプ記事です。 :
大まかに次のような文字列を再結合する関数を書くのを手伝ってください:
/**
パラメータ:
$arr: 再結合する必要がある元の配列
$len: 結合された長さ
/**/
Function getArray($arr,$len){
//
}
$arr= の書き方を手伝ってください。 Array('A','B' ,'C');
print_r(getArray($arr,2));
$arr=Array('A','B','C','D', 'E','F');
print_r(getArray($arr,4));
要件は次のとおりです:
タイプ 1: A、B、C
予期される組み合わせは次のとおりです: AB、AC、BC
タイプ 2: A、B 、C、D (長さが 2 または 3 など、結果の長さはパラメータによって制御できます)
期待される組み合わせは次のとおりです: AB、AC、AD、BC、BD、CD、またはABC、BCD、ACD、ABD
3 番目のタイプ: A、B、C、D、E (結果の長さは、長さが 2、3、または 4 であるなど、パラメーターによって制御できます)
予想される組み合わせは次のとおりです: AB、AC、AD、AE、BC、BD、BE、CD、CE、DE または ABC、BCD、CDE、ABD、ABE、ACD、ACE、BDE、BCE、ADE または ABCD、BCDE、ABCE、ACDE、ABDE
4 番目のタイプ: A、B、C、D、E 、F (結果の長さは、長さが 2、3、4、または 5 であるなど、パラメーターによって制御できます)
期待される組み合わせは次のとおりです:上記の組み合わせに基づいて推測され、ここでは引用されません
上記の要件は似ているように見えますが、不思議ですが、よく考えてみると、かつて考えていたようなことはまったくないことに気づきました。などの方法を使いましたが、考えても実現できなかったので、長い時間をかけましたが、C言語を使用して同様の方法を見つけることができませんでした。しかし、C 言語を PHP に変更したところ、結果は予想とは大きく異なり、結局、CSDN で 200 分かけて専門家に説明を求めるしかありませんでした。 「重圧の下には勇敢な人間がいる。」ははは、このことわざは真実です。すぐに、PHP バージョンの「xuzuning」から 3 つの答えが得られました。なんと、10 ラウンドの最後通告を経て、最終的に最善の解決策が見つかりました。
/** 重新?合Array,例如(2x3;3x3;3x4) 返回: 重?後的Array ??: $arr:要重?的Array $len:??Array?合到一起 用法: $arr=Array('A1','B2','C3','D4','E5','f'); $x3=Fun::CombiArray($arr,3); /**/ Public Static Function combiArray($arr,$len){ $cr = Range(0,$len-1); $k = False; $total = Count($arr); While($cr[0] < $total-($len-1)) { $t = Array(); For($i=0;$i<$len;$i++){$t[]=$arr[$cr[$i]];} $r[] = $t; For($i=$len-1;$i>=0;$i--) { $cr[$i]++; For($j=$i;$j<$len-1;$j++){$cr[$j+1] = $cr[$j]+1;} IF($cr[$i] < $total-($len-$i-1)){Break;} } } Return $r; }
素晴らしいアルゴリズムです。誰かの 7 サイクルのアルゴリズムと比べて、何倍効率が向上したか分かりません
。プログラムは速くて愚かでした。それではアルゴリズムを見てみましょう。
..