Seorang junior menanyakan pertanyaan wawancara Java sebelumnya, tetapi pertanyaannya tidak sulit. Menerapkan segitiga Yang Hui dengan Java. Saya meluangkan waktu untuk menyelesaikannya dan menemukan itu cukup menarik, jadi saya ingin menuliskannya dan membagikannya. Sebelum menulis kode, mari kita klarifikasi dua pertanyaan berikut terlebih dahulu.
Apa itu Segitiga Yang Hui
Segitiga Yang Hui adalah pengaturan geometris koefisien binomial dalam segitiga. Disebutkan dalam "Penjelasan Detail tentang Sembilan Bab Algoritma" yang ditulis oleh Yang Hui, seorang matematikawan dari Dinasti Song Selatan di negara saya pada tahun 1261. Di Eropa, disebut segitiga Pascal, seperti yang ditunjukkan pada gambar tersebut.
Segitiga Yang Hui
Hukum Segitiga Yang Hui adalah prinsipnya
1. Setiap angka sama dengan jumlah dari dua angka di atasnya.
2. Setiap baris angka simetris kiri dan kanan, dan secara bertahap menjadi lebih besar dari 1.
3. Angka dalam baris n memiliki istilah N.
4. Jumlah nomor garis n-th adalah 2n-1.
5. Jumlah M di baris ke-n dapat dinyatakan sebagai C (N-1, M-1), yaitu, jumlah kombinasi elemen M-1 yang diambil dari elemen berbeda N-1.
6. Angka M dalam baris N sama dengan angka N-M+1, yang merupakan salah satu sifat dari angka gabungan.
7. Setiap angka sama dengan jumlah nomor kiri dan kanan dari baris sebelumnya. Properti ini dapat digunakan untuk menulis seluruh segitiga Yang Hui. Artinya, nomor i-th di baris n+1 sama dengan jumlah angka i-1 dan angka ke-i di baris n, yang juga merupakan salah satu properti dari angka gabungan. Yaitu, C (n+1, i) = c (n, i)+c (n, i-1).
8. Koefisien dalam rumus ekspansi (A+B) n sesuai dengan setiap item dalam garis (n+1) dari segitiga Yang Hui pada gilirannya.
9. Hubungkan angka pertama di baris 2n+1, dengan angka ketiga dalam baris 2n+2, angka kelima di baris 2n+3, dan jumlah angka ini adalah angka 4n+1 fibonacci; Transfer nomor kedua dalam baris 2n-1 (n> 1), dengan angka keempat di baris 2n-2, dan nomor keenam di baris 2n-2 ... jumlah angka ini adalah angka fibonacci 4n-2.
10. Atur angka di setiap baris dan Anda bisa mendapatkan N-1 dari 11 (n adalah jumlah baris) Kekuatan: 1 = 11^0; 11 = 11^1; 121 = 11^2 ... ketika n> 5, itu tidak akan memenuhi properti ini. Pada saat ini, angka paling kanan "1" pada baris ke-n harus ditempatkan dalam satu digit, dan kemudian menyelaraskan satu digit angka di sebelah kiri hingga sepuluh digit ......, dan seterusnya, isi ruang kosong dengan "0", dan kemudian tambahkan semua angka bersama-sama, dan angka yang diperoleh persis pada kekuatan N-1 dari 11. Mengambil N = 11 sebagai contoh, jumlah level level adalah tepat pada barisan N-1 dari 11. Mengambil N = 11 sebagai contoh, jumlah level level adalah tepat pada baris N-1 dari 11. 1,10,45.120.210.252.210.120,45,10,1, dan hasilnya adalah 25937424601 = 1110.
Setelah memahami dua poin ini, pemikiran kita menjadi sangat jelas. Ada banyak cara untuk mengimplementasikannya, di sini saya berencana untuk menggunakan array dua dimensi ditambah ganda untuk loop untuk mengimplementasikannya.
Kode demo:
Kelas Publik Yanghui {public static void main (string [] args) {// Buat array dua dimensi int t [] [] = int int [10] []; // lintasi lapisan pertama dari array dua dimensi untuk (int i = 0; i <t.length; i ++) {// inisialisasi ukuran array lapisan kedua t [i] = int baru [i+1]; // lintasi array lapisan kedua untuk (int j = 0; j <= i; j ++) {// Tetapkan elemen array di kedua sisi ke 1 if (i == 0 || j == 0 || j == i) {t [i] [j] = 1; } else {// Nilai lain dihitung dengan rumus t [i] [j] = t [i-1] [j]+t [i-1] [j-1]; } // output array elemen system.out.print (t [i] [j]+"/t"); } // line break system.out.println (); }}}Hasil output di konsol adalah sebagai berikut:
Hanya sepuluh baris segitiga Yang Hui yang output di sini. Optimalkan dan dapat diubah untuk secara dinamis memperoleh jumlah baris. Ini juga dapat diubah menjadi segitiga positif, cukup tambahkan loop untuk menghitung ruang. Siswa yang tertarik dapat mencobanya. ―― Dari programmer lini ke-18 Java
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.