题目大意:删除最少的字符使字符串成非递减排列
思路:倒着模拟,依次比较删除。(第一次使用了string字符串数组和resize)(get到新技能 #include<bits/stdc++.h> 万能头函数)
#include<bits/stdc++.h>
#define manx 500005
using namespace std;
int main()
{
int n;
string s[manx];
cin>>n;
for (int i=1; i<=n; i++) cin>>s[i];
for (int i=n-1; i>=1; i--){
if(s[i] > s[i+1]){
for (int j=1; j<s[i].length(); j++){
if(s[i][j] > s[i+1][j]) s[i].resize(j);
} //删除s[i]第j个后的所有元素
}
}
for (int i=1; i<=n; i++) cout<<s[i]<<endl;
return 0;
}
关于string.reserve( ) 和string.resize( ) 的学习:
http://blog.youkuaiyun.com/freecloud_insky/article/details/47058597