gpt4 book ai didi

Java 排列 2

转载 作者:行者123 更新时间:2023-12-01 05:51:59 28 4
gpt4 key购买 nike

大约一周前,我问了一个关于帮助我解决这个问题的问题

Java permutations

,打印排列方法有问题。我已经整理了我的代码,并有一个现在可以工作的工作示例,尽管如果 5 位于数组中的第五个位置,它不会打印它。任何帮助将不胜感激。

 package permutation;

public class Permutation {

static int DEFAULT = 100;

public static void main(String[] args) {
int n = DEFAULT;
if (args.length > 0)
n = Integer.parseInt(args[0]);
int[] OA = new int[n];
for (int i = 0; i < n; i++)
OA[i] = i + 1;
System.out.println("The original array is:");
for (int i = 0; i < OA.length; i++)
System.out.print(OA[i] + " ");
System.out.println();
System.out.println("A permutation of the original array is:");
OA = generateRandomPermutation(n);
printArray(OA);
printPermutation(OA);
}

static int[] generateRandomPermutation(int n)// (a)
{
int[] A = new int[n];
for (int i = 0; i < n; i++)
A[i] = i + 1;
for (int i = 0; i < n; i++) {
int r = (int) (Math.random() * (n));
int swap = A[r];
A[r] = A[i];
A[i] = swap;
}
return A;
}

static void printArray(int A[]) {
for (int i = 0; i < A.length; i++)
System.out.print(A[i] + " ");
System.out.println();
}

static void printPermutation(int[] p)

{
int n = p.length-1;
int j = 0;
int m;
int f = 0;

System.out.print("(");
while (f < n) {
m = p[j];
if (m == 0) {
do
f++;
while (p[f] == 0 && f < n);
j = f;
if (f != n)
System.out.print(")(");
}
else {
System.out.print(" " + m);
p[j] = 0;
j = m - 1;
}
}
System.out.print(" )");
}
}

最佳答案

我不太热衷

int n = p.length-1;

其次是

while (f < n) {

因此,如果 p 的长度为 5 个单位,并且 f 从 0 开始,则循环将从 0 到 3。这似乎排除了数组中的最后一个元素。

关于Java 排列 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4361689/

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