rt,代码如下:
#include<bits/stdc++.h>++
#define N 55
using namespace std;
int n,s[N],ans,f[N],z1[N],z2[N],g1,g2;
bool v[N];
void dfs(int x,int r,bool c)
{
f[r] = x;
if(c && r > g1)
{
g1 = r;
for(int i = 1;i <= r;i ++) z1[i] = f[i];
}
if(!c && r > g2)
{
g2 = r;
for(int i = 1;i <= r;i ++) z2[i] = f[i];
}
r ++;
for(int i = x + 1;i <= n;i ++)
{
if(v[i]) continue;
if(c && s[i] > s[x])
dfs(i,r,1);
if(!c && s[i] < s[x])
dfs(i,r,0);
}
return;
}
int main()
{
cin >> n;
while(n)
{
memset(v,0,sizeof(v));
ans = 0;
for(int i = 1;i <= n;i ++) cin >> s[i];
for(int i = 1;i <= n;i ++)
{
if(!v[i])
{
g1 = g2 = 0;
ans ++;
dfs(i,1,0),dfs(i,1,1);
if(g1 > g2)
{
for(int i = 1;i <= g1;i ++) v[z1[i]] = 1;
}
else
{
for(int i = 1;i <= g2;i ++) v[z2[i]] = 1;
}
}
}
cout << ans << endl;
cin >> n;
}
return 0;
}