遇到这个问题 有没有大神遇到过解决的  求算法
有这样一个算法 规定一个总价,然后从N本书中选择任意本书等于这个总价。不用2的N次方穷举的算法,谢谢。 1 分钟前 提问者: 审什 | 悬赏分:10 | 浏览次数:2次
问题补充: 数学上这个是组合即从CN0 CN1 CN2 ...一直到CNN一共是2的N次方个方案,从中选择等于那个总价的方案然后列出。求数据结构与算法大神演绎较好的算法,若满意,加分送上。

解决方案 »

  1.   

    用正则表达式随手写个            int[] items = new int[]{ 10, 13, 15, 25, 39, 47, 69};
                int N = items.Length;
                int sum = 100; //总价
                string source = new string('1', sum);
                string regex = string.Format("^{0}$", string.Join("", items.Select(x => string.Format("(1{{{0}}})?", x)).ToArray()));
                Regex r = new Regex(regex);
                Match m = r.Match(source);
                if (m.Success)
                {
                    Console.WriteLine("Result: {0}", string.Join(",", Enumerable.Range(1, N).Where(x=> m.Groups[x].Success).Select(x => m.Groups[x].Value.Length.ToString()).ToArray()));
                }
                else
                {
                    Console.WriteLine("No Result");
                }
      

  2.   


    求大神讲解正则表达式在C#算法设计上优势与不足,以及学习它要看什么书投入多少时间。最后问下大神使用它的时候要在程序开头 USING什么东西 谢谢
      

  3.   

    楼主也可以用个TRY CATCH啊 当输入错误的时候可以提示报错,当然这样效果肯定没有先判断的好,不过可以应付一些小项目的。
      

  4.   

    正则表达式不是用来设计算法的……
    真要学的话,网上有“正则表达式30分钟入门教程”,保守估计一天就能学会。
    正则表达式相关类在System.Text.RegularExpression里
      

  5.   

    开始想和lz说说动态规划,不过后来……lz您还是先看看C#语法吧。