簡體   English   中英

如何使用遞歸方法查找所有可能的數字

[英]How to find all possible numbers with a Recursion method

我想編寫一個遞歸方法,為這些數字打印所有可能的排列,整數1到9

隨機排列在三行三列的網格中。例如:

6   2   1

5   4   7

3   9   8

抱歉,我沒有任何代碼,因為這對我來說很難。

public class Test {

public static void main (String[] args){
     String x = "123456789";
    System.out.println(test(x,0));


}
public static String test(String x , int y){

    if(x.length()==1)return "";

    return x.charAt(y)+test(x.substring(y),y);
}   

將值傳遞給數組,隨機化並創建一個循環以生成矩陣。 循環:進行一個通用循環,開始生成具有矩陣i0,j0的i0,j0的矩陣,並添加數組的值

int j = 0;
 for( int i = 0; i <= YOURARRAY.length(); i++)
   {
System.out.println(   i POSITIONOFARRAY   );
j+1
   }

有很多方法可以實現這樣的示例,這是一個示例。 為了方便起見,我將使用int[]代替String

public static void main(String[] args) {
    nextPermutation(new int[9], 0, new boolean[9]);
}

public static void nextPermutation(int[] perm, int index, boolean[] alreadyUsed) {
    if(index == perm.length) {
        //the permutation is complete
        //you can store it or print it
    } else {

        for(int i = 0 ; i < alreadyUsed.length ; i++) {
            if(alreadyUsed[i]) continue;

            perm[index] = i+1;

            boolean[] newAlreadyUsed = Arrays.copyOf(alreadyUsed, alreadyUsed.length);
            newAlreadyUsed[i] = true;
            nextPermutation(Arrays.copyOf(perm, perm.length), index+1, Arrays.copyOf(newAlreadyUsed, newAlreadyUsed.length));
        }
    }
}

這將生成1-9的所有可能組合。 該算法的思想是跟蹤已使用的數字,循環運行,然后選擇所有可用數字。

請注意,傳遞permalreadyUsed 副本很重要,否則,您將只傳遞相同的數組並覆蓋以前的排列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM