当前位置: 首页 > 面试题库 >

用Java重复排列数组

许涵容
2023-03-14
问题内容

该站点上有一些类似的问题也有所帮助,但是我不能完全弄清楚这个问题,所以我希望这不是重复的。

这是一项家庭作业,其中您具有一组字符[A,B,C],并且必须使用递归来获取所有排列(重复)。我具有的代码可以做到这一点:

char[] c = {'A', 'B' , 'C'};

public void printAll(char[] c, int n, int k) {
    if (k == n) {
      System.out.print(c);
      return;
    }
    else {   
      for (int j = 0; j<n; j++) {
        for (int m = 0; m<n; m++) {
           System.out.print(c[k]); 
           System.out.print(c[j]); 
           System.out.print(c[m] + "\r\n");
        }
      }
    }        
    printAll(c, n, k+1);    
}

但是,参数n应该定义输出的长度,因此,尽管此函数打印出长度为3的所有排列,但不能显示长度为2的排列。我已经尝试了所有可以想到的内容,并仔细研究了Google搜索结果,由于无法解决似乎很简单的问题,我感到很恼火。


问题答案:

如果我理解正确,则会为您提供一组字符c和所需的长度n

从技术上讲,没有重复的排列。我假设您想要所有长度n为的字符串,且包含的字母c

您可以这样进行:

to generate all strings of length N with letters from C
 -generate all strings of length N with letters from C
     that start with the empty string.

to generate all strings of length N with letters from C
   that start with a string S
 -if the length of S is N
  -print S
 -else for each c in C
  -generate all strings of length N with letters from C that start with S+c

在代码中:

printAll(char[] c, int n, String start){
  if(start.length >= n){
    System.out.println(start)
  }else{
    for(char x in c){ // not a valid syntax in Java
      printAll(c, n, start+x);
    }
  }
}


 类似资料:
  • 我已经列出了对数。我想先根据键对它们进行排序,如果键相同,则根据值进行排序。 我尝试了以下代码,但引发了与类型不兼容的异常:无法推断类型变量T 错误: 不兼容的类型:无法推断类型变量T(参数不匹配;类对中的无效方法引用方法getKey无法应用于所需的给定类型:未找到参数:对象原因:实际参数列表和形式参数列表长度不同) 其中T、K、V是类型变量:T扩展在方法比较中声明的对象IT(ToIntFunct

  • 我想在不使用数组的情况下按降序排列数字。当我使用字符串时,它给出了运行时错误。例如: 这是我写的,但问题是第一个数字没有打印出来,这不是预期的输出。

  • 我需要一个函数来接收arrayList并返回一个新的arrayList,其中包含大小相同的整数。His元素将表示原始数组中索引i中的值的重复序列数(外观数)。 1单个外观也将被视为一个序列。例如:arr[1,1,0,1]- 输入:它不必是排序数组 函数示例: arr[3,0,1,2,1,1,1,3]▪×输入:(arr)▪×输出:newArray[2,1,2,1,2,2,2,2]因为'3'在序列中出

  • 我有一个,其中具有字符串值,其中包含名称,然后将double转换为字符串。

  • 问题内容: 我有以下课程。在此,虹膜是具有某些属性的另一类。 我想对此数组列表进行排序(即列表 helperList),基于距离参数降序。我已经编写了以下方法,但是它不起作用。 有人可以提出解决方案吗? 问题答案: 为什么不让您的类实现接口,然后使用Collections类提供的内置排序方法。 我认为这可以解决问题。另外,此方法是稳定的。 http://docs.oracle.com/javase