Я написал этот метод для поиска самой длинной увеличивающейся подпоследовательности в массиве. Мой вопрос: после проверки того, будет ли следующий индекс выше во втором цикле 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);
}
Рассмотрим последовательность, подобную '12123'. После первых двух чисел вам нужно запустить новую последовательность, но 'currentSeq' -' 2', а не '1'. Без сброса на '1', следующая длина последовательности будет' 4' вместо '3'. –