单调递增最长子序列(NYOJ 17)
2014-11-14 00:42
369 查看
求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
输入第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出
输出字符串的最长递增子序列的长度
样例输入
样例输出
方法一:
如:dabdbf最长递增子序列就是abdf,长度为4
输入第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出
输出字符串的最长递增子序列的长度
样例输入
3 aaa ababc abklmncdefg
样例输出
1 3 7
方法一:
#include<iostream> #include<cstring> #define N 10010 using namespace std; int dp ; char s ; int main() { int len,test,i,j,max; scanf("%d",&test); while(test--) { scanf("%s",&s); len=strlen(s); dp[0]=1; for(i=1;i<len;i++) { max=0; for(j=i-1;j>=0;j--) { if(s[i]>s[j]&&max<dp[j]) { max=dp[j]; } } dp[i]=max+1; } max=dp[0]; for(i=1;i<len;i++) if(max<dp[i]) max=dp[i]; printf("%d\n",max); } return 0; }方法二:
#include<iostream> #include<cstring> #define N 10010 using namespace std; char s ; char ans ; int count; int main() { int test,len,i,j; cin>>test; while(test--) { cin>>s; len=strlen(s); count=1; ans[0]=s[0]; for(i=0;i<len;i++) { for(j=count-1;j>=0;j--) { if(j==0&&ans[0]>s[i]) ans[0]=s[i]; if(ans[j]<s[i]) { ans[j+1]=s[i]; if(j==count-1) count++; break; } } } ans[count]='\0'; // cout<<ans<<endl; cout<<count<<endl; } return 0; }方法三:
#include<iostream> #define N 1010 using namespace std; char a ,ans ; int work(int n) { int i,j,k,s,e,m; ans[0]=a[0]; k=0; for(i=1;i<n;i++) { if(ans[k]<a[i]) { k++; ans[k]=a[i]; continue; } s=0;e=k; while(s<=e) { if(a[i]<ans[s]) { j=s;break; } if(ans[e]<a[i]) { j=e+1;break; } m=(s+e)/2; if(ans[m]<a[i]) s=m+1; else if(a[i]<ans[m]) e=m-1; else { j=m;break; } } ans[j]=a[i]; } return k+1; } int main() { int n,i; cin>>n; while(n--) { cin>>a; cout<<work(strlen(a))<<endl; } return 0; }
相关文章推荐
- nyoj 17 单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- nyoj 17 单调递增最长子序列 【dp】
- nyoj 17 单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- nyoj--17 单调递增最长子序列(LIS)
- NYOj-17-单调递增最长子序列
- NYOJ17,单调递增最长子序列
- nyoj44 nyoj17 HDU1087 DP动规 连续字符串的和最大值 单调递增最长子序列 单调递增子序列最小个数 非连续最大递增子序列
- NYOJ 17 单调递增最长子序列 (二分 STL,lower_bound)
- nyoj 单调递增最长子序列 17 (LIS模板)
- NYOJ 17 单调递增最长子序列
- nyoj17_单调递增最长子序列
- nyoj 17单调递增最长子序列
- NYOJ-17-单调递增最长子序列
- NYOJ 17 单调递增最长子序列(基础dp)
- nyoj 17 单调递增最长子序列
- 单调递增最长子序列(nyoj17)
- nyoj 17 单调递增最长子序列