ジュニアは私にJavaのインタビューの質問を以前に質問しましたが、質問は難しくありませんでした。 JavaでYang Hui Triangleを実装します。私はそれを整理するのに少し時間がかかり、それが非常に面白いことがわかりましたので、私はそれを書き留めて共有したかったのです。コードを書く前に、まず次の2つの質問を明確にしましょう。
ヤン・フイ・トライアングルとは何ですか
Yang Huiの三角形は、三角形の二項係数の幾何学的配置です。それは、1261年の私の国の南の歌王朝の数学者であるYang Huiによって書かれた「9つの章のアルゴリズムの詳細な説明」で言及されました。ヨーロッパでは、図に示すように、パスカル三角形と呼ばれます。
ヤン・フイの三角形
ヤン・フイの三角形の法則は原則です
1.各数値は、その上の2つの数値の合計に等しくなります。
2。数字の各行は対称的な左右であり、1から徐々に大きくなります。
3.行Nの数にはn用語があります。
4. n番目の線番号の合計は2n-1です。
5. n列のmの数は、c(n-1、m-1)、つまりn-1の異なる要素から取得したm-1要素の組み合わせの数として表現できます。
6.行nのmth数はn-m+1に等しくなります。これは、結合された数値のプロパティの1つです。
7.各数値は、前の行の左右の数の合計に等しくなります。このプロパティは、Yang Hui Triangle全体を書くために使用できます。つまり、線n+1のi番目の数値は、i-1th数の合計とnのi番目の数値に等しくなります。つまり、c(n+1、i)= c(n、i)+c(n、i-1)です。
8。(a+b)nの膨張式の係数は、ヤン・フイの三角形の(n+1)線の各項目に対応します。
9。2N+1の行の最初の数値を、2N+2の3番目の数字、2N+3の5番目の数値を接続します。これらの数値の合計は4N+1フィボナッチ数です。ライン2N-1(n> 1)の2番目の数値を、2N-2の4番目の数値、および2N-2の6番目の数値を転送します。これらの数値の合計は4N-2フィボナッチ数です。
10。各行の数値を配置すると、11のn-1(nは行数)を取得できます:1 = 11^0; 11 = 11^1; 121 = 11^2 ... n> 5の場合、このプロパティを満たしません。この時点で、n番目の線の右端の数字「1」を1桁に配置し、左側の数字の1桁を10桁に合わせて配置する必要があります。 1,10,45,120,210,252,210,120,45,10,1、および結果は25937424601 = 1110です。
これらの2つの点を理解した後、私たちの考え方は非常に明確になります。これを実装するには多くの方法があります。ここでは、2次元配列とループ用のダブルを使用して実装することを計画しています。
デモコード:
public class yanghui {public static void main(string [] args){// 2次元配列int t [] [] = new int [10] []; //(int i = 0; i <t.length; i ++){// 2番目のレイヤー配列のサイズを初期化する(int i = 0; i <t.length; i ++)の2次元配列の最初のレイヤーをトラバースします。 //(int j = 0; j <= i; j ++){//両側の配列要素を1に割り当てる2番目のレイヤー配列をトラバースします(i == 0 || j == 0 || j == i){t [i] [j] = 1; } else {//他の値は、式t [i] [j] = t [i-1] [j]+t [i-1] [j-1]によって計算されます。 } //出力配列要素system.out.print(t [i] [j]+"/t"); } // Line Break System.out.println(); }}}コンソールの出力結果は次のとおりです。
ここには、ヤン・フイの三角形が10列のみが出力されます。それを最適化すると、行数を動的に取得するように変更できます。また、正の三角形に変えることもできます。ループを追加してスペースを計算するだけです。興味のある学生はそれを試すことができます。 - - Java 18th-lineプログラマーから
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。