Die Beispiele in diesem Artikel teilen Ihnen den spezifischen Code des Java -Arrangements und des Kompositionsalgorithmus für Ihre Referenz. Der spezifische Inhalt ist wie folgt
Paket beanutil; import Java.util.ArrayList; Import Java.util.list; Import com.work.core.exception.ourException;/** * Statistik Die Kombination der meisten Chancen für das Vorkommen von drei * * @Author Wangmingjie * @date 2009-1-1:22:19 PM */Public Class. Die Idee dieses Programms ist es, ein Array zu eröffnen, und sein Index entspricht 1 Zahlen von 1 bis m. Der Wert des Array -Elements beträgt 1, um den Einweis anzugeben // Die dargelegte Nummer wird ausgewählt, und wenn es 0 ist, wird es nicht ausgewählt. // Initialisieren Sie zuerst die ersten N -Elemente des Arrays auf 1, was darauf hinweist, dass die erste Kombination die erste N -Nummer ist. // Scannen Sie dann die "10" -Kombination des Array -Elementwerts von links nach rechts, finden Sie die erste "10" -Kombination und drehen Sie ihn in // "01" -Kombination und bewegen Sie alle "1" links links links links das Ende des Arrays. // Wenn sich die erste "1" in die MN -Position des Arrays bewegt, müssen Sie sich bis zur letzten Kombination zum letzten Ende nach rechts bewegt. // For example, find the combination of 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,4 // 0 1 1 0 1 //1,2,5 // 1 0 1 0 1 //1,3,5 // 0 1 1 0 1 //2,3,5 // 0 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_statisanythe S = new Copy_2_of_statisanythee (); S. PrintanyThree (); } / ** * * / public void printytHree () {int [] num = new int [] {1,2,3,4,5,6}; print (kombinieren (num, 3)); } / ** * Wählen Sie M -Zahlen aus n Nummern * @param a * @param m * @return * / public list combine (int [] a, int m) {int n = a.Length; if (m> n) {neue ourexception werfen ("Fehler! Es gibt nur"+n+"Elemente in Array a."+m+"größer als" +2+"!!!"); } List result = new ArrayList (); int [] bs = new int [n]; für (int i = 0; i <n; i ++) {bs [i] = 0; } // initialisieren für (int i = 0; i <m; i ++) {bs [i] = 1; } boolean flag = true; booleschen tempflag = false; int pos = 0; int sum = 0; // Finden Sie zuerst die erste 10 Kombination, wird dann zu 01 und bewegen Sie gleichzeitig alle 1s links nach links von der Seite des Arrays do {sum = 0; pos = 0; tempflag = true; result.add (drucken (bs, a, m)); für (int i = 0; i <n-1; i ++) {if (bs [i] == 1 && bs [i+1] == 0) {bs [i] = 0; BS [i+1] = 1; pos = i; brechen; }} // Bewegen Sie alle 1 links nach links von der Array für (int i = 0; i <pos; i ++) {if (bs [i] == 1) {sum ++; }} für (int i = 0; i <pos; i ++) {if (i <sum) {bs [i] = 1; } else {bs [i] = 0; }} // Überprüfen Sie, ob sich alle 1s auf die rechte Seite des Arrays für (int i = nm; i <n; i ++) {if (bs [i] == 0) {tempFlag = false; brechen; }} if (tempflag == false) {flag = true; } else {flag = false; }} while (Flag); result.add (drucken (bs, a, m)); Rückgabeergebnis; } private int [] print (int [] bs, int [] a, int m) {int [] result = new int [m]; int pos = 0; für (int i = 0; i <bs.Length; i ++) {if (bs [i] == 1) {result [pos] = a [i]; pos ++; }} Rückgabeergebnis; } private void print (Liste l) {für (int i = 0; i <l.size (); i ++) {int [] a = (int []) l.get (i); für (int j = 0; j <A.Length; j ++) {System.out.print (a [j]+"/t"); } System.out.println (); }}}Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.