Les exemples de cet article partagent avec vous le code spécifique de l'algorithme d'arrangement et de composition Java pour votre référence. Le contenu spécifique est le suivant
Package Beanutil; import java.util.arraylist; import java.util.list; import com.work.core.exception.ourexception; / ** * statistiques la combinaison des chances les plus occurcies de tout * * @author wangmingjie * @date 2009-1-1 01:22:19 pm * / public Class Copy_2_of_statisan Algorithme // L'idée de ce programme est d'ouvrir un tableau, et son indice représente 1 à M nombres. La valeur de l'élément de tableau est 1 pour indiquer son indice // le nombre représenté est sélectionné, et s'il est 0, il n'est pas sélectionné. // Initialize d'abord, définissez les n premier éléments du tableau sur 1, indiquant que la première combinaison est le premier numéro N. // Scannez ensuite la combinaison "10" de la valeur de l'élément de tableau de gauche à droite, trouvez la première combinaison "10" et transformez-la en combinaison // "01", et déplacez tous "1" à gauche à gauche à l'extrémité la plus à gauche du tableau. // Lorsque le premier "1" se déplace vers la position Mn du tableau, c'est-à-dire, lorsque tous les n "1s" se déplacent à l'extrémité la plus à droite, vous devez // à la dernière combinaison. // Par exemple, trouvez la combinaison de 3 en 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 0 1 // 1,2,5 //1 0 1 // 1,3,5 // 0 1 1 0 1 //2,5 / 0 1 // 1 1,3 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.PrintanyThere (); } / ** * * / public void printanyThere () {int [] num = new int [] {1,2,3,4,5,6}; print (combiner (num, 3)); } / ** * Sélectionnez M nombres à partir de n numéros * @param a * @param m * @return * / public list combine (int [] a, int m) {int n = a.Length; if (m> n) {lancer une nouvelle ourexception ("erreur! Il n'y a que des éléments" + n + "dans le tableau a." + m + "supérieur à" +2 + "!!!"); } List result = new ArrayList (); int [] bs = new int [n]; pour (int i = 0; i <n; i ++) {bs [i] = 0; } // initialiser pour (int i = 0; i <m; i ++) {bs [i] = 1; } booléen drapeau = true; booléen tempflag = false; int pos = 0; int sum = 0; // Trouvez d'abord la première combinaison des 10 premières, alors devient 01, et en même temps, déplacez tous les 1 à gauche vers le côté le plus gauche du tableau do {sum = 0; pos = 0; tempflag = true; result.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; casser; }} // déplacez tout le 1 à gauche vers le côté le plus gauche du tableau pour (int i = 0; i <pos; i ++) {if (bs [i] == 1) {sum ++; }} pour (int i = 0; i <pos; i ++) {if (i <sum) {bs [i] = 1; } else {bs [i] = 0; }} // Vérifiez si tous les 1 sont passés du côté le plus à droite du tableau pour (int i = nm; i <n; i ++) {if (bs [i] == 0) {tempFlag = false; casser; }} if (tempflag == false) {flag = true; } else {flag = false; }} while (drapeau); result.add (print (bs, a, m)); Résultat de retour; } 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) {result [pos] = a [i]; pos ++; }} Retour Résultat; } 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 (); }}}Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.