解题思路:
定义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语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:566 |
字符串比较 (C语言代码)答案错误????浏览:641 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:1072 |
C二级辅导-阶乘数列 (C语言代码)浏览:736 |
WU-蓝桥杯算法提高VIP-勾股数 (C++代码)浏览:1685 |
【简单计算】 (C语言代码)浏览:642 |
校门外的树 (C语言代码)浏览:733 |
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:852 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:593 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:538 |