求最大递增串
虽然大神说我用链表这么绕容易吧自己绕晕
但没关系,我还是成功绕出来了
用结构体+数组实现了谜样的数组式静态链表
优点好像就是方法比较特别吧
// 求最大递增串
// main.cpp
// longest2
//
// Created by 朱枝睿 on 2018/3/7.
// Copyright © 2018年 朱枝睿. All rights reserved.
//
#include <iostream>
using namespace std;
int N,First;
typedef struct st{
st(){
value=next=sort=-1;
len=1;
}
int value, len, next,sort;
}Node;
Node a[1000];
void next(int i){
int p=First;
while (a[p].next != -1) {
if (a[i].len>=a[a[p].next].len) {
a[i].next=a[p].next;
a[p].next=i;
return;
}
p=a[p].next;
}
}
int main(int argc, const char * argv[]) {
// insert code here...
int i;
cin>>N;
for (i=0; i<N; i++) {
cin>>a[i].value;
}
First=N;
a[N].next=N-1;
int p;
for (i=N-2; i>=0; i--) {
p=First;
while (a[p].next != -1) {
p=a[p].next;
if (a[i].value<a[p].value) {
a[i].sort=p;
a[i].len=a[p].len+1;
break;
}
}
next(i);
}
p=a[First].next;
cout << "长度为:"<<a[p].len<<endl;
while (p!=-1) {
cout<<a[p].value<<' ';
p=a[p].sort;
}
cout<<endl;
return 0;
}