poj2533 测试正确,提交无限WA= =求大神 5
#include"iostream"#include"cstring"usingnamespacestd;intn;ints[1005];intnum[1005][100...
#include"iostream"
#include"cstring"
using namespace std;
int n;
int s[1005];
int num[1005][1005];
int c=0;
int r=0;
int longest(int i,int x)
{
for(int k=i+1;k<n;k++)
{
if(s[k]>s[i])
{
longest(k,x+1);
}
}
num[r][c] = x;
c++;
return 0;
}
int main()
{
cin>>n;
memset(s,0,sizeof(int)*(n));
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
num[i][j] =0;
}
}
for(int i=0;i<n;i++)
{
cin>>s[i];
}
int x=1;
for(int j=0;j<n;j++)
{
x=1;
c=0;
r=j;
longest(j,x);
}
int tmax = num[0][0];
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(num[i][j]>=tmax) tmax = num[i][j];
}
}
cout<<tmax;
return 0;
}
求解,求帮。
用递归做的, num 这个数组是存放每一个子序列长度,r是行,c是列,然后找最大值。 展开
#include"cstring"
using namespace std;
int n;
int s[1005];
int num[1005][1005];
int c=0;
int r=0;
int longest(int i,int x)
{
for(int k=i+1;k<n;k++)
{
if(s[k]>s[i])
{
longest(k,x+1);
}
}
num[r][c] = x;
c++;
return 0;
}
int main()
{
cin>>n;
memset(s,0,sizeof(int)*(n));
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
num[i][j] =0;
}
}
for(int i=0;i<n;i++)
{
cin>>s[i];
}
int x=1;
for(int j=0;j<n;j++)
{
x=1;
c=0;
r=j;
longest(j,x);
}
int tmax = num[0][0];
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(num[i][j]>=tmax) tmax = num[i][j];
}
}
cout<<tmax;
return 0;
}
求解,求帮。
用递归做的, num 这个数组是存放每一个子序列长度,r是行,c是列,然后找最大值。 展开
1个回答
2015-12-02
展开全部
又不是能过测试数据就能过题目的呢。。。首先你得把最后一行的system("pause")给注释掉,然后我可以告诉你你的算法是过不去的,原因是那个题的范围特别大,必须得优化统计的速度才可以,具体算法你可以去网上搜poj1007,在这里不详细说了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询