zoukankan      html  css  js  c++  java
  • 【待修改】排列组合

    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);
            
            
            
            
        }
    }
  • 相关阅读:
    poj 3126 Prime Path
    poj 2255 Tree Recovery
    spoj 7259 LITE
    poj 1742 Coins
    poj 1915 Knight Moves
    poj 2352 Stars
    【祝贺】gooogleman嵌入式开发板联盟图标设计完成,Let me Show!
    【讨论】TE6410/OK6410 开发板dnw c0008000是什么意思, ?
    【讨论】为什么我的300W摄像头偶尔会拍照不成功?
    【探讨】关于2440 触摸屏驱动的怪异现象分析
  • 原文地址:https://www.cnblogs.com/hansongjiang/p/3977955.html
Copyright © 2011-2022 走看看