一道趣味数学题,很有意思

123456789这九个按顺序排列的数,要求在它们之间插入若干个+,-,*,/ ,使其结果正好等于100如: 1*2*3*4+5+6+7*8+9=100

我的程序:
        static void Main(string[] args)
        {
            int i = 0;
            foreach (string str in new Program().procedure("123456789"))
            {
                if (new Program().getRes(str) == 100)
                {
                    i++;
                    Console.WriteLine("第" + i + "解: " + str+"=100");
                }
            }
            //new Program().getRes("123+45-67+89");
            Console.WriteLine("共" + i + "解");
            Console.WriteLine("");
            i = 0;
            foreach (string str in new Program().procedure("987654321"))
            {
                if (new Program().getRes(str) == 100)
                {
                    i++;
                    Console.WriteLine("第" + i + "解: " + str + "=100");
                }
            }
            //new Program().getRes("98*7/6+5*4/3-21");
            //new Program().getRes("98*7/6-5*4/3*2-1");
            //这两个解我没做出来希望有人可以帮我解答下,谢谢
            Console.WriteLine("共"+i+"解");
        }


要用到的函数一:遍历所有表达式
        #region 返回+ - * /表达式集合
        /// <summary>
        /// 返回+ - * /表达式集合
        /// </summary>
        /// <param name="num">数字序列</param>
        /// <returns>+ - * /表达式集合</returns>
        public List<string> procedure(string num)
        {
            string[] op = { "+", "-", "*", "/", "" };
            List<string> res = new List<string>();
            List<string> resMore = new List<string>();
            res.Add(num);
            int i = 0;
            if (num.Length == 1)
            {
                return res;
            }
            else
            {
                string first = num.Substring(0, num.Length - 1);
                string second = num.Substring(num.Length - 1, 1);

                for (i = 0; i < 5; i++)
                {
                    foreach (string str in procedure(first))
                    {
                        resMore.Add(str + op[i] + second);
                    }
                }
                return resMore;
            }
        }
        #endregion


所要函数二:这个计算表达式的值
        #region 计算加减乘除
        /// <summary>
        /// 计算加减乘除
        /// </summary>
        /// <param name="ex">表达式</param>
        /// <returns>结果</returns>
        public Double getRes(string ex)
        {
            if (ex.Contains("+"))
            {
                string[] f = ex.Split('+');
                Double sum = 0;
                for (int i = 0; i < f.Length; i++)
                {
                    sum += getRes(f[i]);
                }
                return sum;
            }
            else if (ex.Contains("-"))
            {
                string[] f = ex.Split('-');
                Double sum = getRes(f[0]);
                for (int i = 1; i < f.Length; i++)
                {
                    sum -= getRes(f[i]);
                }
                return sum;
            }
            else if (ex.Contains("*"))
            {
                string[] f = ex.Split('*');
                Double sum = 1;
                for (int i = 0; i < f.Length; i++)
                {
                    sum *= getRes(f[i]);
                }
                return sum;
            }
            else if (ex.Contains("/"))
            {
                string[] f = ex.Split('/');
                Double sum = getRes(f[0]);
                for (int i = 1; i < f.Length; i++)
                {
                    if ( getRes(f[i]) ==0)
                    {
                        return 1000;
                    }
                    sum /= getRes(f[i]);
                }
                return sum;
            }
            else
                return Convert.ToDouble(ex);
        }
        #endregion


这个程序的解:
第1解: 12+34+5*6+7+8+9=100
第2解: 1+23-4+56+7+8+9=100
第3解: 1/2/3*456+7+8+9=100
第4解: 1*2+34+5+6*7+8+9=100
第5解: 12+34-5+6*7+8+9=100
第6解: 1-2-3+45+6*7+8+9=100
第7解: 1+2*3+4+5+67+8+9=100
第8解: 12+3-4+5+67+8+9=100
第9解: 1-2+3*4+5+67+8+9=100
第10解: 1-2-3+4*5+67+8+9=100
第11解: 12*3-4*5+67+8+9=100
第12解: 1+23*4+5-6+7-8+9=100
第13解: 1*2+34+56+7-8+9=100
第14解: 1+2+3*4*56/7-8+9=100
第15解: 1*23+4+5+67-8+9=100
第16解: 1+2+34-5+67-8+9=100
第17解: 12+3*4+5+6+7*8+9=100
第18解: 1*2*3*4+5+6+7*8+9=100
第19解: 12-3+4*5+6+7*8+9=100
第20解: 1*2+34+5-6+7*8+9=100
第21解: 12+34-5-6+7*8+9=100
第22解: 1-2-3+45-6+7*8+9=100
第23解: 12-3-4+5*6+7*8+9=100
第24解: 1*23+4+56/7*8+9=100
第25解: 1*23*4-56/7/8+9=100
第26解: 1+2+3-4+5+6+78+9=100
第27解: 1*2*3-4+5+6+78+9=100
第28解: 1*2+3*4+5-6+78+9=100
第29解: 12+3*4-5-6+78+9=100
第30解: 1*2*3*4-5-6+78+9=100
第31解: 1*2-3+4*5-6+78+9=100
第32解: 1+2+3*4*5/6+78+9=100
第33解: 1+2*34-56+78+9=100
第34解: 1+234*5*6/78+9=100
第35解: 1+23*4-5+6+7+8-9=100
第36解: 123-4-5-6-7+8-9=100
第37解: 1-2+3*4*5+6*7+8-9=100
第38解: 123+4*5-6*7+8-9=100
第39解: 1+23*4+56/7+8-9=100
第40解: 123+45-67+8-9=100
第41解: 12/3+4*5*6-7-8-9=100
第42解: 1*2*34+56-7-8-9=100
第43解: 1*2+3+45+67-8-9=100
第44解: 1-2+3+45+6+7*8-9=100
第45解: 1-2+3*4*5-6+7*8-9=100
第46解: 12/3+4*5*6*7/8-9=100
第47解: 1+23-4+5+6+78-9=100
第48解: 1*2+3+4*5+6+78-9=100
第49解: 12*3-4+5-6+78-9=100
第50解: 1*2+3-4+5*6+78-9=100
第51解: 12/3/4+5*6+78-9=100
第52解: 1+2+3+4+5+6+7+8*9=100
第53解: 1*2*3+4+5+6+7+8*9=100
第54解: 1+23-4-5+6+7+8*9=100
第55解: 1-2*3+4*5+6+7+8*9=100
第56解: 12*3-4-5-6+7+8*9=100
第57解: 1+2*3+4*5-6+7+8*9=100
第58解: 1-2*3-4+5*6+7+8*9=100
第59解: 1+2-3*4+5*6+7+8*9=100
第60解: 1+2*3*4*5/6+7+8*9=100
第61解: 1-2-34+56+7+8*9=100
第62解: 1/2*3/4*56+7+8*9=100
第63解: 12+3*4+5+6-7+8*9=100
第64解: 1*2*3*4+5+6-7+8*9=100
第65解: 12-3+4*5+6-7+8*9=100
第66解: 1*2+34+5-6-7+8*9=100
第67解: 12+34-5-6-7+8*9=100
第68解: 1-2-3+45-6-7+8*9=100
第69解: 12-3-4+5*6-7+8*9=100
第70解: 1-2*3-4-5+6*7+8*9=100
第71解: 1+2-3*4-5+6*7+8*9=100
第72解: 1+2+3-4*5+6*7+8*9=100
第73解: 1*2*3-4*5+6*7+8*9=100
第74解: 1+23-4+56/7+8*9=100
第75解: 1*2+34-56/7+8*9=100
第76解: 1-2-3+4*56/7+8*9=100
第77解: 1+2+3-45+67+8*9=100
第78解: 1*2*3-45+67+8*9=100
第79解: 1+2+34*5+6-7-8*9=100
第80解: 1+234-56-7-8*9=100
第81解: 1*234+5-67-8*9=100
第82解: 1*2-3+4-5+6+7+89=100
第83解: 1+2*3-4-5+6+7+89=100
第84解: 1-23+4*5+6+7+89=100
第85解: 12-3-4+5-6+7+89=100
第86解: 1+2+3*4-5-6+7+89=100
第87解: 1-23-4+5*6+7+89=100
第88解: 1*2/3+4*5/6+7+89=100
第89解: 1/2*34-5+6-7+89=100
第90解: 12+3+4+5-6-7+89=100
第91解: 1*23-4+5-6-7+89=100
第92解: 12/3+4*5-6-7+89=100
第93解: 1-23-4-5+6*7+89=100
第94解: 1*2-3+4+56/7+89=100
第95解: 1+2*3-4+56/7+89=100
第96解: 12+3+4-56/7+89=100
第97解: 1*23-4-56/7+89=100
第98解: 123-45-67+89=100
第99解: 1+234*5/6-7-89=100
第100解: 12+3*45+6*7-89=100
第101解: 123+4-5+67-89=100
共101解

第1解: 9*8+7+6+5+4+3+2+1=100
第2解: 98-7-6+5+4+3+2+1=100
第3解: 9+8+76+5-4+3+2+1=100
第4解: 9*8+7*6-5*4+3+2+1=100
第5解: 9*8+76-54+3+2+1=100
第6解: 98+7-6+5-4-3+2+1=100
第7解: 9+87-6-5+4*3+2+1=100
第8解: 9*8+7*6-5-4*3+2+1=100
第9解: 9*8+7+6*5-4*3+2+1=100
第10解: 9*8-7-6-5+43+2+1=100
第11解: 9+8*7-6-5+43+2+1=100
第12解: 9+8+7*6-5+43+2+1=100
第13解: 9+8+7+6*5+43+2+1=100
第14解: 98+7-6-5+4+3-2+1=100
第15解: 98-7+6+5-4+3-2+1=100
第16解: 98/7*6+5*4-3-2+1=100
第17解: 9*8*7/6+5*4-3-2+1=100
第18解: 98/7*6+5+4*3-2+1=100
第19解: 9*8*7/6+5+4*3-2+1=100
第20解: 9+8+7+65+4*3-2+1=100
第21解: 9*8+7+65-43-2+1=100
第22解: 98/7*6+5+4+3*2+1=100
第23解: 9*8*7/6+5+4+3*2+1=100
第24解: 9+8+7+65+4+3*2+1=100
第25解: 9+87+6-5-4+3*2+1=100
第26解: 9*8+7-6+5*4+3*2+1=100
第27解: 9*8+7*6-5-4-3*2+1=100
第28解: 9*8+7+6*5-4-3*2+1=100
第29解: 9*8+7+6+5*4-3*2+1=100
第30解: 98-7-6+5*4-3*2+1=100
第31解: 98/7*6*5/4-3*2+1=100
第32解: 9*8*7/6*5/4-3*2+1=100
第33解: 98+7-6*5+4*3*2+1=100
第34解: 9+8-7+65+4*3*2+1=100
第35解: 98/7-6+5+43*2+1=100
第36解: 9+8+7-6-5+43*2+1=100
第37解: 98+7-6*5/4+3/2+1=100
第38解: 9+8+7-6+54*3/2+1=100
第39解: 9*8+7+6*5*4/3/2+1=100
第40解: 9+87-6+54/3/2+1=100
第41解: 98+7*6-5-4-32+1=100
第42解: 98+7+6*5-4-32+1=100
第43解: 98+7+6+5*4-32+1=100
第44解: 9-8+76+54-32+1=100
第45解: 9+8+7*6*5-4*32+1=100
第46解: 9*8-7-6+5/4*32+1=100
第47解: 9+8*7-6+5/4*32+1=100
第48解: 9+8+7*6+5/4*32+1=100
第49解: 98-7+6-5+4+3+2-1=100
第50解: 9-8+76*5/4+3+2-1=100
第51解: 9+8+76+5+4-3+2-1=100
第52解: 98+7+6-5-4-3+2-1=100
第53解: 98+7-6+5-4+3-2-1=100
第54解: 98-7+6+5+4-3-2-1=100
第55解: 9-8+7*6+5*4*3-2-1=100
第56解: 9+8-76+54*3-2-1=100
第57解: 9*8+7+6+54/3-2-1=100
第58解: 98-7-6+54/3-2-1=100
第59解: 9+87+6*5/4/3*2-1=100
第60解: 98/7+6-5+43*2-1=100
第61解: 9+87*6-5*43*2-1=100
第62解: 9+87-6+5+4*3/2-1=100
第63解: 9*8-7+6*5+4*3/2-1=100
第64解: 9+8*7+6*5+4*3/2-1=100
第65解: 9+87+6+5-4*3/2-1=100
第66解: 9*8-7+6+5*4*3/2-1=100
第67解: 9+8*7+6+5*4*3/2-1=100
第68解: 98/7+6+54*3/2-1=100
第69解: 9-8+7+65-4+32-1=100
第70解: 9+87+6-5+4-3+2*1=100
第71解: 9+87-6+5+4+3-2*1=100
第72解: 9*8-7+6*5+4+3-2*1=100
第73解: 9+8*7+6*5+4+3-2*1=100
第74解: 9*8+7*6-5-4-3-2*1=100
第75解: 9*8+7+6*5-4-3-2*1=100
第76解: 9*8+7+6+5*4-3-2*1=100
第77解: 98-7-6+5*4-3-2*1=100
第78解: 98/7*6*5/4-3-2*1=100
第79解: 9*8*7/6*5/4-3-2*1=100
第80解: 9*8+7+6+5+4*3-2*1=100
第81解: 98-7-6+5+4*3-2*1=100
第82解: 98/7*6+54/3-2*1=100
第83解: 9*8*7/6+54/3-2*1=100
第84解: 9-8-7+6*54/3-2*1=100
第85解: 9-8-7+65+43-2*1=100
第86解: 98+7*6+5-43-2*1=100
第87解: 9*8+7+6+5+4+3*2*1=100
第88解: 98-7-6+5+4+3*2*1=100
第89解: 9+8+76+5-4+3*2*1=100
第90解: 9*8+7*6-5*4+3*2*1=100
第91解: 9*8+76-54+3*2*1=100
第92解: 98-7+6+5+4-3*2*1=100
第93解: 9*8-7+6+5+4*3*2*1=100
第94解: 9+8*7+6+5+4*3*2*1=100
第95解: 98+7/6+5/4/3*2*1=100
第96解: 98+7-6*5/4/3*2*1=100
第97解: 9*8+7-65+43*2*1=100
第98解: 98-7+6*5/4+3/2*1=100
第99解: 98+7-6-5+4*3/2*1=100
第100解: 98+7+6-5-4*3/2*1=100
第101解: 9*8-7-6+5+4+32*1=100
第102解: 9+8*7-6+5+4+32*1=100
第103解: 9+8+7*6+5+4+32*1=100
第104解: 9-8+76-5-4+32*1=100
第105解: 9-8+7+6+54+32*1=100
第106解: 98+7*6-5/4*32*1=100
第107解: 9-8*7*6-5+432*1=100
第108解: 9+87+6-5+4-3+2/1=100
第109解: 9+87-6+5+4+3-2/1=100
第110解: 9*8-7+6*5+4+3-2/1=100
第111解: 9+8*7+6*5+4+3-2/1=100
第112解: 9*8+7*6-5-4-3-2/1=100
第113解: 9*8+7+6*5-4-3-2/1=100
第114解: 9*8+7+6+5*4-3-2/1=100
第115解: 98-7-6+5*4-3-2/1=100
第116解: 98/7*6*5/4-3-2/1=100
第117解: 9*8*7/6*5/4-3-2/1=100
第118解: 9*8+7+6+5+4*3-2/1=100
第119解: 98-7-6+5+4*3-2/1=100
第120解: 98/7*6+54/3-2/1=100
第121解: 9*8*7/6+54/3-2/1=100
第122解: 9-8-7+6*54/3-2/1=100
第123解: 9-8-7+65+43-2/1=100
第124解: 98+7*6+5-43-2/1=100
第125解: 9*8+7+6+5+4+3*2/1=100
第126解: 98-7-6+5+4+3*2/1=100
第127解: 9+8+76+5-4+3*2/1=100
第128解: 9*8+7*6-5*4+3*2/1=100
第129解: 9*8+76-54+3*2/1=100
第130解: 98-7+6+5+4-3*2/1=100
第131解: 9*8-7+6+5+4*3*2/1=100
第132解: 9+8*7+6+5+4*3*2/1=100
第133解: 98+7/6+5/4/3*2/1=100
第134解: 98+7-6*5/4/3*2/1=100
第135解: 9*8+7-65+43*2/1=100
第136解: 98-7+6*5/4+3/2/1=100
第137解: 98+7-6-5+4*3/2/1=100
第138解: 98+7+6-5-4*3/2/1=100
第139解: 9*8-7-6+5+4+32/1=100
第140解: 9+8*7-6+5+4+32/1=100
第141解: 9+8+7*6+5+4+32/1=100
第142解: 9-8+76-5-4+32/1=100
第143解: 9-8+7+6+54+32/1=100
第144解: 98+7*6-5/4*32/1=100
第145解: 9-8*7*6-5+432/1=100
第146解: 9-8+76-5+4+3+21=100
第147解: 9*8+7+6-5-4+3+21=100
第148解: 98-7-6-5-4+3+21=100
第149解: 98-7*6+5*4+3+21=100
第150解: 98-76+54+3+21=100
第151解: 9*8+7-6+5+4-3+21=100
第152解: 9+87+6-5*4-3+21=100
第153解: 98-7+6-54/3+21=100
第154解: 9*8+7*6-5+4*3-21=100
第155解: 9*8+7+6*5+4*3-21=100
第156解: 9-8*7+6+54*3-21=100
第157解: 9-8-7*6+54*3-21=100
第158解: 9*8+7-6+5+43-21=100
第159解: 9-8+76-5+4/3*21=100
共159解

在网上看到的别人的解比我的解多了两种,也就是我上面指出来的两个解。
正解的网址:http://blog.csdn.net/northwolves/archive/2009/11/20/4841068.aspx


你可能感兴趣的:(F#,Blog)