解题思路:
子问题:以第i个为终点的最长不降子序列
注意事项:
参考代码:
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
string rule;
string str;
cin>>rule;
while(cin>>str)
{
int dp[50]; //以第i个为终点的最长不降子序列
int L=str.length();
for(int i=0;i<L;i++)
dp[i]=1;
for(int i=1;i<L;i++)
for(int j=0;j<i;j++)
{
int n1,n2;
for(int k=0;k<26;k++)
{
if(rule[k]==str[i])
n1=k;
if(rule[k]==str[j])
n2=k;
}
if(n1>=n2)
dp[i]=max(dp[i],dp[j]+1);
}
cout<<*max_element(dp,dp+L);
}
return 0;
}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题8.9 (Java代码)浏览:1413 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:561 |
大小写转换 (C语言代码)浏览:904 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:611 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:634 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:1090 |
DNA (C语言描述,数据结构)浏览:909 |
关于C语言变量位置的问题浏览:294 |
有关字符,字符串的输入输出函数说明浏览:498 |
一元一次方程 (C语言代码)浏览:4245 |