任务:给定一个包含 20 个元素的整数数组 X。将原数组的最长递增序列重写为数组Y。编程语言:C++
#include <clocale>
using namespace std;
int main() {
setlocale(LC_CTYPE, "");
int X[20] = { 3, 2, 6, 4, 8, 5, 7, 9, 1, 10, 12, 11, 14, 13, 15, 18, 16, 19, 17, 20 };
int Y[20] = { 0 };
int maxLength = 1;
int currentLength = 1;
Y[0] = X[0];
for (int i = 1; i < 20; i++) {
if (X[i] > X[i - 1]) {
Y[currentLength] = X[i];
currentLength++;
if (currentLength > maxLength) {
maxLength = currentLength;
}
}
else {
if (currentLength > 1) {
currentLength = 1;
}
Y[currentLength - 1] = X[i];
}
}
cout << "Изначальный массив:" << endl;
for (int j = 0; j < 20; j++) {
if ((j + 1) % 5 == 0) {
cout << X[j] << endl;
}
else
cout << X[j] << " ";
}
cout << "Наибольшая по длине возрастающая последовательность массива X:";
for (int i = 0; i < maxLength; i++) {
cout << Y[i] << " ";
}
}
我不明白为什么代码会产生错误的值?如果可能的话,修复我的代码比编写新代码更好;如果我真的很糟糕,那么我希望看到该任务的正确代码。