回 帖 发 新 帖 刷新版面

主题:递归搜索问题~

这两天学习动态规划,先从递归改进做起。题目是这样的:
在一个最多含有10000的整数(每个数小于10000)序列中找出一个最长的递减子序列.
代码如下(C#):
[code=c]
using System;
using System.Collections.Generic;
using System.Text;

namespace 动态规划问题
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] str ={[color=FF0000] 9, 8, 7, 6, 5,4,1,1[/color] };
            int n = Check(0, 0, str[0], str.Length, str);
            Console.WriteLine(n);

        }
        /// <summary>
        /// 递归搜索算法
        /// </summary>
        /// <param name="start">开始搜索起点</param>
        /// <param name="len">已经匹配的数目</param>
        /// <param name="minValue">当前最小值</param>
        /// <param name="n">所求数组长度</param>
        /// <param name="str">所求数组</param>
        /// <returns></returns>
       static int Check(int start, int len, int minValue,int n,int[] str)
        {
            int better, best = len;
            for (int i = start; i < n; i++)
            {
                if (str[i] < minValue)
                {
                    better = Check(i, len + 1, str[i], n, str);
                    if (better > best)
                    {
                        best = better;
                    }
                }
            }
            return best;
        }
    }
}
[/code]
在当前序列下求得的结果为6,但是把序列改成9, 8, 7, 6, 5,4,6,1后结果还是6,不知道为什么?

回复列表 (共2个回复)

沙发

C#和C/C++一点关系都没有。

板凳

。。。。。。
有你这么说的么?语言只是个描述的工具~
更何况这到题的问题跟部不牵扯语言特性。。。
我说你那么高的专家分怎么都还停留在语言层面呢?

我来回复

您尚未登录,请登录后再回复。点此登录或注册