0
我寫了這個方法來尋找數組中最長的增加子序列。我的問題是,在檢查第二個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」。 –