找到增长最长的子序列的问题

时间:2016-05-06 10:38:36

标签: c#

我写了这个方法来找到数组中增长最长的子序列。我的问题是,在检查第二个for循环中下一个索引是否更高之后,为什么我之后甚至必须使用else块?如果我不这样做,它不会输出正确的结果。如果序列中的下一个更大,为什么仅currentSeq增加1是不够的呢?如果是false,那么继续使用控制流,将currentSeq保留在1处?

static void Main(string[] args)
{
    int length = int.Parse(Console.ReadLine());
    int[] nums = new int[length];

    int currentSeq = 1;
    int maxSeq = 1;

    for (int i = 0; i < nums.Length; i++)
    {
        nums[i] = int.Parse(Console.ReadLine());
    }

    for (int i = 0; i < nums.Length - 1; i++)
    {
        if (nums[i] < nums[i + 1])
        {
            currentSeq++;
        }
        else
        {
            currentSeq = 1;
        }

        if (currentSeq > maxSeq)
        {
            maxSeq = currentSeq;
        }
    }

    Console.WriteLine(maxSeq);
}

1 个答案:

答案 0 :(得分:0)

您需要使用else关键字将currentSeq重置为1以进行下一次序列计算。想象一下,你完成了第一个序列并开始计算表中的下一个序列,你需要从1重新开始。