数字组合不重复的算法

用1,2,3,4四个数字,组成没有重复数字的四位数的个数是:4!也就是24个。其他的比如1,2,3,4,5的组合是5!

具体的算法如下:(用递归的方法来解答的)

  Int32[] num = { 1, 2, 3 ,4};
            IList<Int32> lists = num.ToList<Int32>();
            IList<Int32> results = new List<Int32>();

            for (Int32 i = 0; i < num.Length; i++)
            {
                results.Clear();
                results.Add(num[i]);
                lists.Remove(num[i]);
                DoOthers(lists,results);
                lists = num.ToList<Int32>();
                Console.WriteLine();
            }
                Console.Read(); 

 

 private static void DoOthers(IList<int> lists,IList<Int32> results)
        {
            if (lists.Count == 0)
            {
                foreach (int item in results)
                {
                    Console.Write(item.ToString() + " ");
                }
                Console.WriteLine();
                return;
            }
            else
            {
                Int32[] temp = lists.ToArray<Int32>();
                for (Int32 i = 0; i < temp.Length; i++)
                {
                    results.Add(temp[i]);
                    lists.Remove(temp[i]);
                    DoOthers(lists, results);
                    lists.Add(temp[i]);
                    results.Remove(temp[i]);
                }
            }
        } 

 

posted @ 2010-11-09 14:47  chenping2008  阅读(5257)  评论(0编辑  收藏  举报