直接开两个循环扫描遍历即可,及时更新结果和数组位置。
注意语句return 0语句前面加上了system("pause");语句,如果不加的话程序会直接闪退不出结果。
#include<bits/stdc++.h>
using namespace std;
int n,mark;
int length = 1;
int position;
int max_length = -1;
int main() {
printf("请输入数组的大小:");
cin>>n;
int a[n+5];
printf("请输入数据,用空格隔开:");
int temp;
for(int i = 1;i <= n;i ++) {
cin>>temp;
a[i] = temp;
}
for(int i = 1;i <= n;i++) {
mark = a[i];
for(int j = i + 1;j <= n;j++) {
if(a[j] > mark ) {
length++;
mark = a[j];
} else break;
}
if(max_length < length) {
max_length = length;
position = i;
}
length = 1;
}
printf("最长递增子序列的长度为%d,序列如下:\n",max_length);
mark = a[position];
cout<<mark<<" ";
for(int i = position + 1;i <= n;i++) {
if(mark < a[i]) {
mark = a[i];
cout<<mark<<" ";
} else break;
}
system("pause");
return 0;
}