啊哈磊_编程从这里起步
标题:
最长不降序子列问题
[打印本页]
作者:
tjh
时间:
2018-7-4 10:42
标题:
最长不降序子列问题
#include <bits/stdc++.h>
using namespace std;
int n,MAX=-55,dx=1;
int ben[1000];
struct shu
{
int xiabiao;
int zhi;
};
struct shu x[1000];
void qk(int zuo,int you)
{
int i,j;
struct shu k,temp;
temp=x[zuo];
i=zuo;
j=you;
if(zuo>you)
return;
while(i!=j)
{
while(i<j && x[j].zhi>=x[zuo].zhi)
j--;
while(i<j && x[i].zhi<=x[zuo].zhi)
i++;
if(i<j)
{
k=x[i];
x[i]=x[j];
x[j]=k;
}
}
x[zuo]=x[i];
x[i]=temp;
qk(zuo,i-1);
qk(i+1,you);
return;
}
int max(int x,int y)
{
if(x>y) return x;
else return y;
}
int zhou(int x,int dai,int s)
{
if(x>n)
return dai;
if(ben[x]>s)
{
max(zhou(x+1,dai+1,ben[x]),zhou(x+1,dai,s));
}
else x++;
return zhou(x,dai,s);
}
int main()
{
int i,j,s;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&ben[i]);
x[i].zhi=ben[i];
x[i].xiabiao=i;
}
qk(1,n);
for(i=1;i<=n;i++)
{
if(MAX>=n-i)
continue;
s=zhou(x[i].xiabiao,1,x[i].zhi);
if(s>MAX);
{
MAX=s;
}
}
printf("%d",MAX);
return 0;
}
怎么不输出
作者:
沟通与
时间:
2018-10-16 23:26
提示:
作者被禁止或删除 内容自动屏蔽
欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/)
Powered by Discuz! X3.2