解题思路:

        定义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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论