Примеры в этой статье делятся с вами конкретным кодом алгоритма расположения и композиции Java для вашей ссылки. Конкретный контент заключается в следующем
пакет banuatil; импорт java.util.arraylist; import java.util.list; import com.work.core.exception.ourexception;/** * Статистика Сочетание наиболее шансов на возникновение любого * * @author wangmingjie * @date 2009-10-1 01:22:19 PM */public copy_2_OF_STATISANO Алгоритм // Идея этой программы состоит в том, чтобы открыть массив, а его индекс представляет от 1 до m номеров. Значение элемента массива составляет 1, чтобы указать его индекс // представленное число выбирается, и если оно равно 0, он не выбран. // Сначала инициализируйте, установите первые N -элементы массива на 1, указывая на то, что первая комбинация является первым номером N. // Затем сканируйте комбинацию значения элемента массива слева направо, найдите первую комбинацию «10» и превратите ее в комбинацию // «01» и переместите все «1» слева влево в левый конец массива. // Когда первый «1» перемещается в положение MN массива, то есть, когда все N "1s" перемещаются на самый правый конец, вам нужно // к последней комбинации. // Например, найдите комбинацию 3 в 5: // 1 1 1 0 0 // 1,2,3 // 1 1 0 1 0 // 1,2,4 // 1 0 1 0 // 1,3,4 // 0 1 1 0 // 2,3,4 // 0 1 0 1 // 1,2,5 // 1 0 1 //1,3,5 // 0 1 // 2,2,5 // 1 0 1 //3,5 // 0 1 // 2,2,5 // 1 0 1 //3,5 // 0 1 // 1,2,5 // 1 0 1 //1,5 // 0 1 // 1,2,5 // 1 0 1 //3,5 // 0 1 // 1,2,5 // 1 0 1,3,5 // 0 1 // 1,2,5 // 1 0 1,2,4 // 0 1 // 1,2,5 // 1 1 0 1,2: 2, // 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}; Печать (Combine (num, 3)); } / ** * Выберите m номеры из n номеров * @param a * @param m * @return * / public list combine (int [] a, int m) {int n = a.length; if (m> n) {бросить новое ourexception («Ошибка! Есть только элементы«+n+»в массиве a.»+M+«больше, чем" +2+"!!!); } List result = new ArrayList (); int [] bs = new int [n]; for (int i = 0; i <n; i ++) {bs [i] = 0; } // Инициализировать для (int i = 0; i <m; i ++) {bs [i] = 1; } логический флаг = true; логический Tempflag = false; int pos = 0; int sum = 0; // сначала найдите первые 10 комбинации, затем становится 01 и в то же время перемещать все 1s слева на левую сторону массива 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; перерыв; }} // переместить все 1 слева в левую сторону массива для (int i = 0; i <pos; i ++) {if (bs [i] == 1) {sum ++; }} for (int i = 0; i <pos; i ++) {if (i <sum) {bs [i] = 1; } else {bs [i] = 0; }} // Проверьте, были ли все 1s перенесены на самую правую сторону массива для (int i = nm; i <n; i ++) {if (bs [i] == 0) {tempflag = false; перерыв; }} if (tempflag == false) {flag = true; } else {flag = false; }} while (flag); result.add (print (bs, a, m)); результат возврата; } 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 ++; }} return result; } private void print (список 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 (); }}}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.