【修正対象】配列の組合せ

8002 ワード

package  ;

import java.util.ArrayList;

import java.util.LinkedList;

import java.util.List;

import java.util.Queue;

public class   {

    // 

    public static void pailie(char a[],int lev)

    {

        if(lev==a.length)

        {

            for(int i=0;i<a.length;i++)

            {

                System.out.print(a[i]);

            }

            System.out.println();

        }

        else

        {

            for(int j=lev;j<a.length;j++)

            {

                swap(a,lev,j);

                pailie(a,lev+1);

                swap(a,lev,j);

                

            }

            

            

            

        }

        

        

        

    }

     public static void perm2(char a[],int lev)

        {

            if(lev==a.length)

            {

                for(int i=0;i<a.length;i++)

                {

                    System.out.print(a[i]);

                    

                }

                System.out.println();

               

            }

            else

            {

                boolean tf=true;

                for(int j=lev;j<a.length;j++)

                {

                    // 

                    for(int k=lev;k<j;k++)

                    {

                        if(a[k]==a[j])

                        {

                            tf=false;

                            break;

                        }

                    }

                    

                    if(tf)

                    {

                    swap(a,lev,j);

                    perm2(a, lev+1);

                    swap(a,lev,j);

                    }

                }

                    

                    

                    

                

                

                

            }

        }

            

            

    public static void pailie2(char a[],int lev)

    {

        if(lev==a.length)

        {

            for(int i=0;i<a.length;i++)

            {

                System.out.print(a[i]);

            }

            System.out.println();

        }

        else

        {

            for(int j=lev;j<=a.length-1;j++)

            {

                

                if(hasCommon(a,lev,j))

                {

                swap(a,lev,j);

                pailie(a,lev+1);

                swap(a,lev,j);

                }

                

            }

            

            

            

        }

        

        

        

    }

    private static boolean hasCommon(char[] a, int lev, int j) {

        // TODO Auto-generated method stub

        for(int i=lev;i<j;i++)

        {

            if(a[j]==a[i]) return false; //

            

            

        }

        return true; // 

    }

    private static void swap(char[] a, int lev, int j) {

        char t=a[lev];

         a[lev]=a[j];

         a[j]=t;

        

        

    }

    public static void main(String args[]){

        char chs[]={'1','2','2'};

        System.out.println(" 1");

        pailie(chs, 0);

        System.out.println(" 2");

        perm2(chs,0);

        

        

        

        

    }

}