//获取数组中(多个数)相加和等于(<=)给定值的算法 

            double[] myarray = new double[] { 900, 19, 27.59, 1533.95, 1967.82, 184.48, 32, 1800, 95, 11.89, 40 };

            string str = "";//SortTest(myarray, 900);

            //int[] myarray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };

            List<List<double>> mylist = new List<List<double>>();

            int length = myarray.Length;

            for (int i = 0; i < Math.Pow(2, length); i++)

            {

                List<double> myint = new List<double>();

                for (int j = 0; j < length; j++)

                {

                    if (Convert.ToBoolean(i & (1 << j)))

                        myint.Add(myarray[j]);

                }

                mylist.Add(myint);

            }

            foreach (var a in mylist)

            {

                if (a.Sum() <= 5010 && a.Sum() > 4999)

                {

                    foreach (var b in a)

                    {

                        //Console.Write(b); Console.Write(",");

                        str += b + " + ";

                    }

                    //Console.WriteLine();

                    str += "\r\n" + a.Sum() + ": ";

                }

            }

            return Content(str);