gpt4 book ai didi

java - 如何使 n 级循环类似于 java 中的手动 5 级 for 循环

转载 作者:行者123 更新时间:2023-12-01 14:22:15 25 4
gpt4 key购买 nike

如何使 n 级循环类似于 java 中的手动 5 级 for 循环

public class TestPermutation
{

public static void main(String[] args)
{
int[] input = {1,2,3,4,5};
ma(input);
}

public static void ma(int[] input)
{
int n = input.length;
for(int i=0;i<n;i++)
{
System.out.println(input[i]);
for(int j=i+1;j<n;j++)
{
System.out.println(input[i]+" "+input[j]);
for(int k=j+1;k<n;k++)
{
System.out.println(input[i]+" "+input[j]+" "+input[k]);
for(int l=k+1;l<n;l++)
{
System.out.println(input[i]+" "+input[j]+" "+input[k]+" "+input[l]);
for(int m=l+1;m<n;m++)
{
System.out.println(input[i]+" "+input[j]+" "+input[k]+" "+input[l]+" "+input[m]);
}
}
}
}
}
}
}

我们该怎么办?无论如何,这是我的代码的输出。

11 21 2 31 2 3 41 2 3 4 51 2 3 51 2 41 2 4 51 2 51 31 3 41 3 4 51 3 51 41 4 51 522 32 3 42 3 4 52 3 52 42 4 52 533 43 4 53 544 55

最佳答案

没有递归,只有一些设计的循环。 Live demo .

import java.util.Stack;

public class Test {

public static void main(String[] args) {
int[] input = { 1, 2, 3, 4, 5 };
ma(input);
}

public static void ma(int[] input) {
Stack<Boolean> stack = new Stack<>();
while (true) {
while (stack.size() < input.length) {
stack.push(true);
print(stack, input);
}
while (!stack.isEmpty() && !stack.peek())
stack.pop();
if (stack.isEmpty())
break;
stack.pop();
stack.push(false);
}
}

public static void print(Stack<Boolean> stack, int[] input) {
boolean begin = true;
for (int i = 0; i < stack.size(); i++)
if (stack.get(i)) {
if (begin)
begin = false;
else
System.out.print(' ');
System.out.print(input[i]);
}
System.out.println();
}
}
<小时/>

递归:用新的 mama2 替换上面的 ma:

    public static void ma(int[] input) {
ma2(input, new Stack<Boolean>());
}

public static void ma2(int[] input, Stack<Boolean> stack) {
if (!stack.isEmpty() && stack.peek())
print(stack, input);
if (stack.size() < input.length) {
stack.push(true);
ma2(input, stack);
stack.pop();
stack.push(false);
ma2(input, stack);
stack.pop();
}
}

关于java - 如何使 n 级循环类似于 java 中的手动 5 级 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17441137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com