Los ejemplos en este artículo comparten con usted el código específico del algoritmo de disposición y composición de Java para su referencia. El contenido específico es el siguiente
paquete beanutil; import java.util.arrayList; import java.util.list; import com.work.core.exception.ourexception;/** * Estadísticas La combinación de las más posibilidades de ocurrencia de cualquiera * * @author Wangmingjie * @Date 2009-1-1 01:22:19 PM */public class Copy_2_StatisTheThree { Algoritmo // La idea de este programa es abrir una matriz, y su subíndice representa los números de 1 a M. El valor del elemento de matriz es 1 para indicar su subíndice // El número representado se selecciona, y si es 0, no se selecciona. // Primero inicialice, establezca los primeros n elementos de la matriz en 1, lo que indica que la primera combinación es el primer número N. // luego escanee la combinación "10" del valor del elemento de matriz de izquierda a derecha, encuentre la primera combinación "10" y convídala en la combinación // "01" y mueva todo "1" a la izquierda a la izquierda hasta el extremo más izquierdo de la matriz. // Cuando el primer "1" se mueve a la posición MN de la matriz, es decir, cuando todos los n "1s" se mueven al extremo más derecho, debe // a la última combinación. // por ejemplo, encuentre la combinación de 3 en 5: // 1 1 1 0 0 // 1,2,3 // 1 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 0 1 // 1,2,5 // 1 0 1 // 1,3,5 // 0 1 1/1/2,5 //3 1 // 1,4,5 // 0 1 0 1 1 1 // 2,4,5 // 0 0 0 1 1 1 // 3,4,5 public static void main (string [] args) {copy_2_of_statisyThree s = new Copy_2_of_statisyThree (); S.PrintanyThree (); } / ** * * / public void printanyThree () {int [] num = new int [] {1,2,3,4,5,6}; imprimir (combinar (num, 3)); } / ** * Seleccione m números de n números * @param a * @param m * @return * / public list combine (int [] a, int m) {int n = a.length; if (m> n) {tire nueva ourexception ("¡Error! ¡Solo hay elementos"+n+"en la matriz a."+m+"mayor que" +2+"!"); } Resultado de la lista = new ArrayList (); int [] bs = new int [n]; para (int i = 0; i <n; i ++) {bs [i] = 0; } // Inicializar para (int i = 0; i <m; i ++) {bs [i] = 1; } bandera booleana = true; boolean tempflag = false; int pos = 0; int sum = 0; // Primero encuentre la primera combinación de 10, luego se convierte en 01, y al mismo tiempo mueve todos los 1 a la izquierda hacia el lado más izquierdo de la matriz do {sum = 0; pos = 0; tempflag = true; resultado.Add (impresión (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; romper; }} // Mueva todo el 1 a la izquierda al lado más izquierdo de la 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 si todos los 1 se han movido al lado más derecho de la matriz para (int i = nm; i <n; i ++) {if (bs [i] == 0) {tempflag = false; romper; }} if (tempflag == false) {flag = true; } else {flag = false; }} while (bandera); resultado.Add (impresión (BS, A, M)); resultado de retorno; } private int [] print (int [] bs, int [] a, int m) {int [] result = new int [m]; int pos = 0; for (int i = 0; i <bs.length; i ++) {if (bs [i] == 1) {resultado [pos] = a [i]; pos ++; }} Resultado de retorno; } Private void print (list 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 (); }}}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.