64,642
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
#include<stdio.h>
#include<math.h>
#include<string>
#include<algorithm>
using namespace std;
struct Mystruct
{
char ch;
int maxLengh;
};
int cmp(int n,Mystruct *m,char ch)
{
for (int i = 0; i <= n; i++)
{
if (m[i].ch < ch)
{
if (m[n+1].maxLengh<(m[i].maxLengh + 1))
m[n+1].maxLengh = m[i].maxLengh + 1;
}
}
return m[n+1].maxLengh;
}
int main()
{
int n;
cin >> n;
while (n--)
{
int max = 1;
int maxplace = 0;
int len = 0;
char str[10000];
cin >> str;
// len = strlen(str);
len = sizeof(str)-1;
Mystruct strsruct[100001];
for (int i = 0; i < len; i++)
{
strsruct[i].ch = str[i];
strsruct[i].maxLengh = 1;
}
for (int i = 0; i < len-1; i++)
{
if (max<cmp(i, strsruct, strsruct[i + 1].ch))
max = cmp(i, strsruct, strsruct[i + 1].ch);
}
cout << max << endl;
}
}
#include<iostream>
#include <string>
using namespace std;
int main()
{
int n;
cin >> n;
while (n--)
{
string str;
int count = 1;
cin >> str;
int a[200];
a[0] = -999;
for (int i = 0;i < str.length();i++)
{
for (int j = count - 1;j >= 0;j--)
{
if ((int)str[i] > a[j])
{
a[j + 1] = str[i];
if (j + 1 == count) count++;
break;
}
}
}
cout << count - 1 << endl;
}
return 0;
}
[/quote]我想知道为什么我时间超限
#include<iostream>
#include <string>
using namespace std;
int main()
{
int n;
cin >> n;
while (n--)
{
string str;
int count = 1;
cin >> str;
int a[200];
a[0] = -999;
for (int i = 0;i < str.length();i++)
{
for (int j = count - 1;j >= 0;j--)
{
if ((int)str[i] > a[j])
{
a[j + 1] = str[i];
if (j + 1 == count) count++;
break;
}
}
}
cout << count - 1 << endl;
}
return 0;
}
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
static char str[10001], ch[10001];
int max_inc_substr_len(char *str, int len);
int main(void)
{
int n, i;
cin>>n;
if (n <= 0 || n > 20)
return 0;
int *len_list = new int [n];
for (i = 0; i < n; i++)
len_list[i] = 1;
i = 0;
while (i < n) {
cin>>str;
len_list[i] = max_inc_substr_len(str, strlen(str));
i++;
}
for (i = 0; i < n; i++)
cout<<len_list[i]<<endl;
delete [] len_list;
return 0;
}
int max_inc_substr_len(char *str, int len)
{
int j = 1;
ch[0] = str[0];
for(int i = 1; i < len;++i)
{
if(str[i] > ch[j-1])
{
ch[j] = str[i];
j++;
}
else
{
int t = lower_bound(ch, ch+j, str[i]) - ch;
ch[t] = str[i];
}
}
return j;
}
参考一下吧