Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中所有可能的子集的不同序列_Java - Fatal编程技术网

java中所有可能的子集的不同序列

java中所有可能的子集的不同序列,java,Java,我有一个集合=(1,2,3),我需要得到集合的所有可能子集,它们具有不同的序列(具有重复元素)。out-put外观: 1 2 3 1,2 1,3 2,1 2,3 3,1 3,2 1,2,3 1,3,2 2,1,3 2,3,1 3,1,2 3,2,1 有人能帮我吗?thxx如果您想要子集,那么Google Guava为您提供了一种方法: 但在您的示例中,有一些重复的集合(请记住,集合是无序的)。因此,您可能还希望获得每个子集的所有可能排列: 这个问题可以通过使用位运算查找所有组合来解决 其思想

我有一个集合=(1,2,3),我需要得到集合的所有可能子集,它们具有不同的序列(具有重复元素)。out-put外观:

1
2
3
1,2
1,3
2,1
2,3
3,1
3,2
1,2,3
1,3,2
2,1,3
2,3,1
3,1,2
3,2,1

有人能帮我吗?thxx

如果您想要子集,那么Google Guava为您提供了一种方法:

但在您的示例中,有一些重复的集合(请记住,集合是无序的)。因此,您可能还希望获得每个子集的所有可能排列:


这个问题可以通过使用位运算查找所有组合来解决

其思想是:生成给定数组(集合)的所有子集,该集合称为幂集。对于每个子集(组合),也要找到其排列

参考以下教程,了解如何使用逐位运算查找所有组合

void PERMUTE()
{
/*置换子集数组的置换函数*/
}
公共静态void main(字符串[]args)
{
//此处的TODO代码应用程序逻辑
int集[]={1,2,3};
int n=设置长度;

对于(int i=0;我也使用see link谢谢你的回答。实际上,我尝试编写置换函数,但每次都会出错!!
    void PERMUTE()
    {
        /*PERMUTATION FUNCTION THAT PERMUTES THE SUBSET ARRAY*/
    }
    public static void main(String[] args) 
    {
        // TODO code application logic here
        int Set[]={1,2,3};
        int n=Set.length;

       for (int i = 0; i <= (1 << n); ++i)
       {

           System.out.print("[");
           int subsetSz=0;
           int A[]=new int[100];
            for (int j = 0; j < n; ++j)
            {
                if ((i & 1 << j)!=0)
                {
                    System.out.print(Set[j]+",");
                    A[subsetSz++]=Set[j];

                }
            }
            System.out.println("]");
            /*Permute the subset*/
            if(subsetSz>1)
            {
                PERMUTE(A);
            }
        }
    }