Os exemplos deste artigo compartilham com você o código específico do algoritmo de arranjo e composição Java para sua referência. O conteúdo específico é o seguinte
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 Algoritmo // A idéia deste programa é abrir uma matriz, e seu subscrito representa 1 a M números. O valor do elemento da matriz é 1 para indicar seu subscrito // o número representado é selecionado e, se for 0, não será selecionado. // Primeiro inicialize, defina os primeiros n elementos da matriz como 1, indicando que a primeira combinação é o primeiro número N. // Em seguida, verifique a combinação "10" do valor do elemento da matriz da esquerda para a direita, encontre a primeira combinação "10" e transforme -a em // "01", e mova tudo "1" à esquerda à esquerda à esquerda da matriz. // Quando o primeiro "1" se move para a posição Mn da matriz, ou seja, quando todos os n "1s" se movem para a extremidade mais à direita, você precisa // para a última combinação. // Por exemplo, encontre a combinação de 3 em 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,4 // 0 1 1 1 // 1,2,5 // 1////2,45,4 // 0 1 0 1 // 1,2,5 // 1////1,3,4,4,4 /// 0 1 0 1 // 1,2,5 // 1////2,45,4 // 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_statisanythree s = new copy_2_of_statisanythree (); s.printanythree (); } / ** * * / public void PrintanyThree () {int [] num = new int [] {1,2,3,4,5,6}; imprimir (combinar (num, 3)); } / ** * Selecione os números M de n números * @param a * @param m * @return * / list public Combine (int [] a, int m) {int n = A.Length; if (m> n) {lança a nova nossacepção ("erro! Existem apenas elementos"+n+"na matriz a."+m+"maior que" +2+"!!!"); } Resultado da lista = new ArrayList (); int [] bs = new int [n]; for (int i = 0; i <n; i ++) {bs [i] = 0; } // inicialize para (int i = 0; i <m; i ++) {bs [i] = 1; } bandeira booleana = true; Tempflag booleano = false; int pos = 0; int sum = 0; // Primeiro encontre a combinação 10 primeiros, depois se torna 01 e, ao mesmo tempo, mova todos os 1s à esquerda para o lado mais esquerdo da matriz do {sum = 0; pos = 0; tempflag = true; resultado.add (print (bs, a, m)); for (int i = 0; i <n-1; i ++) {if (bs [i] == 1 && bs [i+1] == 0) {bs [i] = 0; BS [i+1] = 1; pos = i; quebrar; }} // mova todo o 1 à esquerda para o lado mais esquerdo da matriz para (int i = 0; i <pos; i ++) {if (bs [i] == 1) {sum ++; }} para (int i = 0; i <pos; i ++) {if (i <sum) {bs [i] = 1; } else {bs [i] = 0; }} // Verifique se todos os 1s foram movidos para o lado mais à direita da matriz para (int i = nm; i <n; i ++) {if (bs [i] == 0) {tempflag = false; quebrar; }} if (tempflag == false) {flag = true; } else {flag = false; }} while (sinalizador); resultado.add (print (bs, a, m)); resultado de retorno; } private int [] print (int [] bs, int [] a, int m) {int [] resultado = new int [m]; int pos = 0; for (int i = 0; i <bs.length; i ++) {if (bs [i] == 1) {resultado [pos] = a [i]; POS ++; }} Retornar resultado; } private void print (lista l) {for (int i = 0; i <l.size (); i ++) {int [] a = (int []) l.get (i); for (int j = 0; j <A.Length; j ++) {System.out.print (a [j]+"/t"); } System.out.println (); }}}O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.