最简单的,不考虑效率
 string[] number ={ "1","2","3","4","5"};            int maxNum = 10;            List<string> ret = new List<string>();            for (int i = 0; i < 5; i++)
            {
                string temp = number[i];
                for (int j = 0; j < 5; j++)
                {
                    for (int n = 0; n < 5; n++)
                    {                        
                        if(j!=i && n!=i && n!=j)
                        {
                            ret.Add(number[i] + number[j] + number[n]);
                            if (ret.Count >= maxNum)
                                break;
                        }
                        if (ret.Count >= maxNum)
                            break;
                    }
                    if (ret.Count >= maxNum)
                        break;
                }
                if (ret.Count >= maxNum)
                    break;            }            string outStr = string.Empty;
            foreach (string s in ret)
            {
                if (!string.IsNullOrEmpty(outStr))
                    outStr += ",";
                outStr += s;            }            MessageBox.Show(outStr);

解决方案 »

  1.   

    看了LS各位高手的说法,我感觉LZ的意思是那5个数里 本身就存在重复的。如果5个数都不重复的话,就是60种了。所以先选出不重复的数,再输出排列的组合。
      

  2.   


    //选出不重复的数
            private List<int> SelectNum(List<int> nums)
            {
                for (int i = 0; i < nums.Count; i++)
                {
                    for (int j = i + 1; j < nums.Count; j++)
                    {
                        if (nums[i] == nums[j])
                        {
                            nums.Remove(nums[i]);
                            i = -1;
                            break;
                        }
                    }
                }
                return nums;
            }//测试
    static void main(string[] args)
    {
                List<int> nums = new List<int>();            //3、5、9、7
                nums.Add(3);
                nums.Add(5);
                nums.Add(9);
                nums.Add(7);
                nums.Add(3);            nums = SelectNum(nums);            string newStr = "";            for (int i = 0; i < nums.Count; i++)
                {
                    newStr += nums[i].ToString();
                    for (int j = 0; j < nums.Count; j++)
                    {
                        if (i == j)
                        {
                            continue;
                        }
                        else
                        {
                            newStr += nums[j].ToString();
                            for (int z = 0; z < nums.Count; z++)
                            {
                                if (z == i || z == j)
                                {
                                    continue;
                                }
                                else
                                {
                                    newStr += nums[z].ToString();                                if (newStr.Length == 3)
                                        MessageBox.Show(newStr);
                                    newStr = newStr.Substring(0, 2);
                                }
                            }
                            newStr = newStr.Substring(0, 1);
                        }
                    }
                    newStr = "";
                }
    }