讨论 / 错在哪?
zzkca930110 2013-01-13 03:56:00
点我顶贴 收藏 删除

测试结果4: 测试结果错误.错误结果为:11

正确结果应为:10

测试结果5: 测试结果错误.错误结果为:12

正确结果应为:11

测试结果6: 测试结果错误.错误结果为:78

正确结果应为:75

测试结果7: 测试结果错误.错误结果为:82

正确结果应为:77

测试结果8: 测试结果错误.错误结果为:81

正确结果应为:76

测试结果9: 测试结果错误.错误结果为:80

正确结果应为:74

测试结果10: 测试结果错误.错误结果为:81

正确结果应为:78

#include <iostream>

using namespace std;

int a[100],b[100],c[100];

int main ()

{

int n,i,j,k,m1,m2,max;

cin>>n;

for (i=0; i<n; i++) cin>>a[i];

b[0]=c[0]=1;

max=0;

for (k=0; k<n; k++) {

m1=m2=0;

for (i=1; i<n; i++) b[i]=0;

for (i=1; i<k; i++) {

if (a[i]>=a[k]) {b[i]=0; continue;}

b[i]=1;

for (j=0; j<i; j++)

if (a[j]<a[i] && b[j]+1>b[i])

b[i]=b[j]+1;

if (b[i]>m1) m1=b[i];

}

for (i=k+1; i<n; i++) {

if (a[i]>=a[k]) {b[i]=0; continue;}

b[i]=1;

for (j=k+1; j<i; j++)

if (a[j]>a[i] && c[j]+1>c[i])

b[i]=b[j]+1;

if (b[i]>m2) m2=b[i];

}

if (m1+m2>max) max=m1+m2;

}

cout<<n-(max+1)<<endl;

return 0;

}

#1 世纪末的魔术师@2008-08-13 00:48:00
回复 删除
明显你的lis写的比较繁琐。建议改改。

for(int i=1;i<=n;i++){

lis[i]=1;

for(int j=1;j<n;j++)

#2 世纪末的魔术师@2008-08-13 00:50:00
回复 删除
不好意思,按错键,没打完就发送了。

for(int i=0;i<n;i++){

lis[i]=1;

for(int j=0;j<i;j++)

if(a[j]<a[i]&&lis[j]+1>lis[i])

lis[i]=lis[j]+1;

}

#3 404510@2013-01-11 04:32:00
回复 删除
猪33
#4 ccf@2013-01-13 03:56:00
回复 删除
s13
查看更多回复
提交回复