解题思路:
定义len = 0; 第一个元素进来,我们直接将他收入temp[len++]中;
之后, 每一个元素进来前判断,str[i] 是否大于 temp[i];
若大于 直接 temp = temp + str[i];
若小于 说明它不能接在最后一个后面了。那我们就看一下它该接在谁后面。准确的说,并不是接在谁后 面。而是替换掉谁(因为我们所求的时长度而不是序列); str[i]小于该元素,说明str[i]更让潜 力;
特别注意的是,在temp.size() > 1时,新进来的元素 若小于全体temp中的元素,则将temp[0]=str[i].
注意事项:
参考代码:
#include<iostream>
#include<string>
using namespace std;
string standard = ""; //定义全局变量,方便在函数中访问;
int size( char temp) { //如标准链为:qwrat temp为 a ; 则 i=3,return i;
for (int i = 0; i <= standard.size(); i++) {
if (temp == standard[i])
return i;
}
}
int main() {
cin >> standard; //标准链
string str;
while (cin >> str) {
string temp;
temp += str[0];//找到起始位置;
int len = 0;// 标准链的长度-1;
for (int i = 1; i < str.size(); i++) {
if (size(str[i]) >= size(temp[len]) ) { //
temp = temp + str[i];
len++;
}
else {
for (int j = len; j >= 0; j--) {
if (size(str[i]) >= size(temp[j])) {
temp[j + 1] = str[i];
break;
}
else if (j == 0 && size(str[i]) < size(temp[j]))
temp[j] = str[i];
}
}
}
cout << len+1;
}
return 0;
}0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复