码迷,mamicode.com
首页 > 其他好文 > 详细

N个数随机相加得出固定值的排列组合

时间:2015-01-15 17:39:01      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

     static double[] iArr = new double[10] { 1,2,3,4,5,6,7,8,9,10 };
        static Stack<double> stack = new Stack<double>();
        static double tempNum = 0;
        static double a = 11;

        static void Main(string[] args)
        {
            for (int i = 0; i < iArr.Length; i++)
            {
                if (iArr[i] == a)
                {                    
                    continue;
                }
                if (iArr[i] > a)
                {
                    continue;
                }
                stack.Clear();
                stack.Push(iArr[i]);
                Func(i, a - iArr[i]);
            }
        }

        private static void Func(int i, double iValue)
        {
            for (int j = i + 1; j < iArr.Length; j++)
            {
                if (iArr[j] > iValue)
                {
                    continue;
                }
                else if (iValue == iArr[j])
                {
                    stack.Push(iArr[j]);                    
                    foreach (int ss in stack)
                    {
                        Console.Write(ss+"+");
                        tempNum += ss;
                        if (tempNum == a)
                        {
                            Console.WriteLine();
                            tempNum = 0;
                        }
                    }
                    stack.Pop();
                }
                else if (iValue > iArr[j])
                {
                    stack.Push(iArr[j]);
                    Func(j, iValue - iArr[j]);
                    stack.Pop();
                }
            }
        }

  技术分享 

注:借鉴别人的方法,希望能有更优的方法计算

N个数随机相加得出固定值的排列组合

标签:

原文地址:http://www.cnblogs.com/Karson001/p/4226672.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!