Java 重新打印字符串数组
我有一个字符串数组Java 重新打印字符串数组,java,arrays,permutation,Java,Arrays,Permutation,我有一个字符串数组 "Ben", "Jim", "Ken" 如何将上述阵列打印3次,使其看起来像这样: "Ben", "Jim", "Ken" "Jim", "Ben", "Ken" "Ken", "Jim", "Ben" 我只希望初始数组中的每个项都显示为第一个元素。其他项目的显示顺序并不重要 更多例子 输入 "a","b","c","d" public void printArray(String[] s){ } 输出 "a","b","c","d" "b","a","c
"Ben", "Jim", "Ken"
如何将上述阵列打印3次,使其看起来像这样:
"Ben", "Jim", "Ken"
"Jim", "Ben", "Ken"
"Ken", "Jim", "Ben"
我只希望初始数组中的每个项都显示为第一个元素。其他项目的显示顺序并不重要
更多例子
输入
"a","b","c","d"
public void printArray(String[] s){
}
输出
"a","b","c","d"
"b","a","c","d"
"c","b","a","d"
"d","a","c","d"
方法签名
"a","b","c","d"
public void printArray(String[] s){
}
public void打印数组(字符串[]s){
对于(int i=0;i
公共void打印数组(字符串[]s){
对于(int i=0;i
for(int i=0;ifor(int i=0;i这听起来像是一个家庭作业问题,所以虽然我觉得不应该回答它,但我会给出一个简单的提示。您正在寻找一种算法,它将给出“for循环索引”的所有排列(组合)所以如果你有三个元素a,b,c,它们的索引是0,1,2,我们需要的是一种方法来生成0,1,2的排列,这就导致了一个普通的数学问题,一个非常简单的数学公式
请看这里:这听起来像是一个家庭作业问题,所以虽然我觉得不应该回答它,但我会给出一个简单的提示。您正在寻找一种算法,它将给出“for循环索引”的所有排列(组合)所以如果你有三个元素a,b,c,它们的索引是0,1,2,我们需要的是一种方法来生成0,1,2的排列,这就导致了一个普通的数学问题,一个非常简单的数学公式
请看这里:我将尝试解释这个问题的理论/数学,而不是直接给出代码
我能想出的解决这个问题的两个最简单的方法是
- 循环浏览所有元素
- 选择一个元素并列出其余元素
第一种方法需要遍历索引,然后遍历数组中的所有元素,并在必要时循环回开始,在返回原始元素时终止
第二种方法要求您遍历索引,打印原始元素,然后从头开始遍历数组,跳过原始元素
如您所见,这两种方法都需要两个循环(在数组中迭代两次)
在伪代码中,第一种方法可以写成:
for (i = array_start; i < array_end; i++) {
print array_element[i]
for (j = i + 1; j != i; j++) {
if (j is_larger_than array_end) {
set j equal to array_start
}
print array_element[j]
}
}
for (i = array_start; i < array_end; i++) {
print array_element[i]
for (j = array_start; j < array_end; j++) {
if (j is_not_equal_to i) {
print array_element[j]
}
}
}
for(i=array\u start;i
在伪代码中,第二种方法可以写成:
for (i = array_start; i < array_end; i++) {
print array_element[i]
for (j = i + 1; j != i; j++) {
if (j is_larger_than array_end) {
set j equal to array_start
}
print array_element[j]
}
}
for (i = array_start; i < array_end; i++) {
print array_element[i]
for (j = array_start; j < array_end; j++) {
if (j is_not_equal_to i) {
print array_element[j]
}
}
}
for(i=array\u start;i
我将尝试解释这个问题的理论/数学,而不是直接给出代码
我能想出的解决这个问题的两个最简单的方法是
- 循环浏览所有元素
- 选择一个元素并列出其余元素
第一种方法需要遍历索引,然后遍历数组中的所有元素,并在必要时循环回开始,在返回原始元素时终止
第二种方法要求您遍历索引,打印原始元素,然后从头开始遍历数组,跳过原始元素
如您所见,这两种方法都需要两个循环(在数组中迭代两次)
在伪代码中,第一种方法可以写成:
for (i = array_start; i < array_end; i++) {
print array_element[i]
for (j = i + 1; j != i; j++) {
if (j is_larger_than array_end) {
set j equal to array_start
}
print array_element[j]
}
}
for (i = array_start; i < array_end; i++) {
print array_element[i]
for (j = array_start; j < array_end; j++) {
if (j is_not_equal_to i) {
print array_element[j]
}
}
}
for(i=array\u start;i
在伪代码中,第二种方法可以写成:
for (i = array_start; i < array_end; i++) {
print array_element[i]
for (j = i + 1; j != i; j++) {
if (j is_larger_than array_end) {
set j equal to array_start
}
print array_element[j]
}
}
for (i = array_start; i < array_end; i++) {
print array_element[i]
for (j = array_start; j < array_end; j++) {
if (j is_not_equal_to i) {
print array_element[j]
}
}
}
for(i=array\u start;i
您是否已经尝试过任何东西?在这里提问之前,请尝试尝试尝试一下。这是一个常见的初学者错误,但请记住,本网站不适合人们为您做这些工作。您是否已经尝试过任何东西?请在这里提问之前尝试尝试一下。这是一个common初学者的错误,但请记住,本网站不是为人们为您工作的。请在您的代码中提供解释或注释,否则,尽管这是非常基本的,但对不知道代码如何工作的人来说毫无意义。请在您的代码中提供解释或注释,否则,尽管如此非常基本,这对不知道代码如何工作的人来说毫无意义。请在代码中提供解释或注释,否则,尽管这非常基本,但对不知道代码如何工作的人来说毫无意义。@万能的,我只回答了这个问题,因为它太简单了。如果你认为它不够,请感受一下你可以自由地对另一个答案投赞成票或写你自己的。如果你认为我的答案完全没有帮助,请随意投反对票或标记它