解题思路:
定义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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复