首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ArrayList Java中元素的k-置换

ArrayList Java中元素的k-置换
EN

Stack Overflow用户
提问于 2018-10-15 22:49:58
回答 1查看 1K关注 0票数 0

我在寻找一种简单的方法来获得一个ArrayList中元素的k-排列。

我有一个对象X的arrayList,我想根据值k得到元素的所有可能的排列(顺序计数)。

到目前为止,我只找到了所有元素(主要是整数值)的组合和排列,但没有找到数组列表中对象的k排列的解决方案。

有人能帮我吗?

到目前为止,我找到了这个,但我不知道如何适应我的情况:

 public static void perm2(String s, int k)
    {
    perm2("", s, k);
    }
    public static void perm2(String prefix, String s, int k)
    {
    int N = prefix.length();

    int M = s.length();

    if(N == k) System.out.println(prefix);
    else
        {
        for(int i = 0; i < M; i++)
            perm2(prefix+s.charAt(i), s.substring(0, i) + s.substring(i+1, M), k);
        }
    }
    public static void main(String[] args)
    {
    String alphabet = "123";
    int N = alphabet.length();
    int K = 2;
    String elements = alphabet.substring(0, N);
    perm2(elements, K);
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-16 05:49:07

据我所知,您希望从长度为nList生成k元素的所有排列,其中n >= k

static <E> void permK(List<E> p, int i, int k)
{
  if(i == k)
  {
    System.out.println(p.subList(0, k));
    return;
  }

  for(int j=i; j<p.size(); j++)
  {
    Collections.swap(p, i, j);
    permK(p, i+1, k);    
    Collections.swap(p, i, j);
  }
}

测试:

public static void main(String[] args)
{
  permK(new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5)), 0, 3);
}

输出:

[1, 2, 3]
[1, 2, 4]
[1, 2, 5]
[1, 3, 2]
[1, 3, 4]
[1, 3, 5]
[1, 4, 3]
[1, 4, 2]
[1, 4, 5]
[1, 5, 3]
<snip>
[5, 3, 1]
[5, 4, 3]
[5, 4, 2]
[5, 4, 1]
[5, 1, 3]
[5, 1, 4]
[5, 1, 2]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52819397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档