【www.gdgbn.com--工作计划】

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



    class Perm
    ...{
        private List permPreList;
        private List permedList;

        public Perm(List list)
        ...{
            permPreList = list;
            permedList = new List();
        }

        public List 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);
                            }
                        }
                    }  
                }
            }
        }
    }

      多扔砖头撒~.~

 



本文来源:http://www.gdgbn.com/fanwenwang/13019/