有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用递归方法查找所有可能的数字

我想写一个递归方法来打印所有可能的安排 数字,整数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);
}   

共 (2) 个答案

  1. # 1 楼答案

    传递值​​对一个数组,随机化并创建一个循环来生成矩阵。 循环:创建一个通用循环,开始生成具有i0,j0的矩阵,类似于矩阵的位置i1,j1,并添加数组的值

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

    有很多方法可以实现类似的功能,这是一个例子。为了方便起见,我将使用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副本非常重要,否则您将只传递相同的数组并覆盖以前的排列