Algorithm--全排列(c#)

作者:简简单单 2008-04-26

         出来混的迟早一天要还的,这句话出来工作才真正体会到... 大学里没好好学,许多东西现在都要重新捡起来。按照一个完整的.net自学计划,现在也算走到算法这个学习阶段了。有些体会想share下~ 这次想说的是全排列。“比如a,b和c的排列方式有:abc, acb, bac, bca, cab 和cba。n个元素的排列方式共有n!种。”书上用的是递归方法,由于用的是C++语言,感觉有点陌生~一个激灵下想出个非递归方法,用C#写的,希望能做参考,谢谢



    class Perm
    
{
        
private List<string> permPreList;
        
private List<string> permedList;

        
public Perm(List<string> list)
        
{
            permPreList 
= list;
            permedList 
= new List<string>();
        }


        
public List<string> PermedList
        
{
            
get
            
{
                
return permedList;
            }

        }


        
public void GetPerm()
        
{
            
for (int i = 0; i < permPreList.Count; i++)
            
{
                
string first = permPreList[i];

                
for (int j = 0; j < permPreList.Count; j++)
                
{
                    
if (j != i)
                    
{
                        
string second = permPreList[j];

                        
for (int k = 0; k < permPreList.Count; k++)
                        
{
                            
if (k != j && k != i)
                            
{
                                
string third = permPreList[k];

                                permedList.Add(first 
+ second + third);
                            }

                        }

                    }
  
                }

            }

        }

    }

      多扔砖头撒~.~

 



<

相关文章

精彩推荐