当前位置: 首页 > 知识库问答 >
问题:

java数组中元素排列的组合

岳英耀
2023-03-14

我做了一个代码,应该显示数组中元素排列的整个组合。

    package com.company;

import java.util.ArrayList;
import java.lang.Math;
import java.util.Collections;
import java.util.List;

public class Main {

    public static void main(String[] args) {
     first(3);
    }

    static int factorial(int n) {
        int res = 1;
        for (int i = 2; i <= n; i++) {
            res *= i;
        }
        return res;
    }

   static void first(int n){
      int[] array = new int[n];
        for(int i = 0; i < n;i++){
          array[i]=i+1;
        }
        for(int i = 0; i < factorial(n);i++){
            for(int j = 0; j < n; j++) {
                if(j==n-1){
                    continue;
                }
                int t = array[j];
                array[j] = array[j+1];
                array[j+1] = t;
            }
            for(int k =0;k<n;k++){
                System.out.print(array[k]);
            }
            System.out.println();
            }


        }
   }

应该是什么:

123 213 231 132 312 321

但结果是这样的:

231 312 123 231 312 123

如何以应有的方式进行排列?

共有1个答案

巫马玉堂
2023-03-14

最好将元素集处理为字符串,互联网上有很多例子,比如:

 public class Permute {
    public static void main(String[] args) {
        String str = "123";
        permute(str);
    }
    public static void permute(String str) {
        permute("", str);
    }
    public static void permute(String prefix, String str) {
        int n = str.length();
        if (n == 0) {
            System.out.println(prefix);
        } else {
            for (int i = 0; i < n; i++) {
                permute(prefix + str.charAt(i), str.substring(0, i) + str.substring(i+1, n));
            }
        }
    }
}
 类似资料:
  • 如何列出字符数组中指定的任何字母的所有大小写排列?假设我有一个这样的字符数组:['h','e','l','l','o',我想打印出字母“l”的可能组合,这样它就可以打印出来[你好,你好,你好,你好]。 这是我到目前为止所拥有的(唯一的问题是我可以打印排列,但是我不能在实际单词中打印它们。所以我的代码打印[ll, lL, Ll, LL]而不是上面的示例。 我的代码:

  • 我试图将输入与arraylist中的值进行比较。 前任;我有一个arraylist: 数组的每个索引在我的程序中代表一个唯一的属性。e、 g索引0代表,索引1代表等。如果我做返回第二个数组。 我正在尝试将与每个数组中的第二个元素进行比较。所以假设我运行这个,我希望它遍历每个数组中的每个[1],如果该索引匹配,则返回true。 因此,我希望它将'number'(1102)与每个第一个索引元素进行比较

  • 我需要一个函数来接收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'在序列中出

  • 问题内容: 给定不同整数的数组,打印数组的所有排列。 例如: 问题答案: 我们可以借助递归来解决问题。递归很难解释,所以我创建了一个递归树来演示它。 这是相同的代码。 当你运行上面的程序时,你会得到以下输出: 我已经用下图说明了递归是如何在这里工作的。 您需要在新窗口中打开此图表并对其进行缩放。 由于数组中有 3 个元素,因此每个节点有 3 个分支。

  • 我有下面的代码- 是包含int属性的类对象列表-参考号:即

  • 问题内容: 我需要将列表排序为: 我已经使用了该函数,并且能够根据值进行排序…但是我无法按字母顺序进行排序,因为我需要按照数字的降序和字母的升序对列表进行排序数字具有相同的值。 问题答案: 使用元组作为浮点数为负的排序键可以反转顺序: 如果您不能进行求反(例如对字符串或字母值或非数字值),则可以利用Python sort函数稳定的事实,并分两步进行排序: