Contoh -contoh dalam artikel ini berbagi dengan Anda kode spesifik dari Algoritma Pengaturan Java dan Komposisi untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
package BeanUtil;import java.util.ArrayList;import java.util.List;import com.work.core.exception.OurException;/** * Statistics the combination of the most chances of occurrence of any three* * @author wangmingjie * @date 2009-1-1 01:22:19 pm */public class Copy_2_of_StatisAnyThree {// Combination Algoritma // Gagasan program ini adalah untuk membuka array, dan subskripnya mewakili angka 1 ke M. Nilai elemen array adalah 1 untuk menunjukkan subskripnya // Angka yang diwakili dipilih, dan jika 0, tidak dipilih. // Inisialisasi pertama, atur elemen N pertama dari array ke 1, menunjukkan bahwa kombinasi pertama adalah angka N pertama. // Kemudian pindai kombinasi "10" dari nilai elemen array dari kiri ke kanan, temukan kombinasi "10" pertama dan ubah menjadi // "01" kombinasi, dan pindahkan semua "1" di kiri ke kiri ke ujung kiri array. // Ketika "1" pertama bergerak ke posisi MN array, yaitu, ketika semua "1" "pindah ke ujung kanan, Anda harus // ke kombinasi terakhir. // Misalnya, temukan kombinasi 3 in 5: // 1 1 1 0 0 // 1,2,3 // 1 1 0 1 0 // 1,2,4 // 1 0 1 1 0 // 1,3,4 // 0 1 1 1 0 // 2,3 // 0 1 1 0 1 // 1,2,5 // 1 0 1 0 1 // 0 1 // 0 1 // 0 1 // 0 1 // 0 1 // 0 1 // 0 1 // 0 1 // 0 1 // 0 1 // 0 1 // 1/0 1 // 1/0 1 // 1/1/1/1/1/1/1/1/1/1/0 1 // 1/1/1/1/1/0 1 // 1/1/1/1/0 1 // 1,4,5 // 0 1 0 1 1 1 // 2,4,5 // 0 0 1 1 1 // 3,4,5 public static void main (string [] args) {copy_2_of_statisanyTheRE S = copy_2_of_tatisanythree (); s.printanythree (); } / ** * * / public void printanythree () {int [] num = new int [] {1,2,3,4,5,6}; cetak (gabungkan (num, 3)); } / ** * Pilih nomor M dari N angka * @param a * @param m * @return * / daftar publik gabungan (int [] a, int m) {int n = a.length; if (m> n) {lempar baru exception ("error! hanya ada elemen"+n+"dalam array a."+m+"lebih besar dari" +2+"!!!"); } Daftar hasil = arraylist baru (); int [] bs = int baru [n]; untuk (int i = 0; i <n; i ++) {bs [i] = 0; } // inisialisasi untuk (int i = 0; i <m; i ++) {bs [i] = 1; } bendera boolean = true; boolean tempflag = false; int pos = 0; int sum = 0; // Pertama temukan kombinasi 10 pertama, kemudian menjadi 01, dan pada saat yang sama memindahkan semua 1 di sebelah kiri ke sisi paling kiri array do {sum = 0; pos = 0; Tempflag = true; result.add (cetak (bs, a, m)); untuk (int i = 0; i <n-1; i ++) {if (bs [i] == 1 && bs [i+1] == 0) {bs [i] = 0; BS [i+1] = 1; pos = i; merusak; }} // Pindahkan semua 1 di sebelah kiri ke sisi paling kiri array untuk (int i = 0; i <pos; i ++) {if (bs [i] == 1) {sum ++; }} untuk (int i = 0; i <pos; i ++) {if (i <sum) {bs [i] = 1; } else {bs [i] = 0; }} // Periksa apakah semua 1 telah pindah ke sisi paling kanan array untuk (int i = nm; i <n; i ++) {if (bs [i] == 0) {tempflag = false; merusak; }} if (tempflag == false) {flag = true; } else {flag = false; }} while (flag); result.add (cetak (bs, a, m)); hasil pengembalian; } private int [] print (int [] bs, int [] a, int m) {int [] result = int int [m]; int pos = 0; untuk (int i = 0; i <bs.length; i ++) {if (bs [i] == 1) {hasil [pos] = a [i]; pos ++; }} hasil pengembalian; } private void print (daftar l) {for (int i = 0; i <l.size (); i ++) {int [] a = (int []) l.get (i); untuk (int j = 0; j <a.length; j ++) {System.out.print (a [j]+"/t"); } System.out.println (); }}}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.