알고리즘 문제
2019. 11. 16. 18:05
longest increasing subsequence 최장 증가 수열 c++ vector
예시입력 57asdf123
예시출력 57adf
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
using namespace std;
int longest_increasing_subsequence(vector<char> vec) {
int n = vec.size();
vector<vector<char> > subsequence(n);
subsequence[0].push_back(vec[0]);
for (int i = 1; i < n; i++){
for (int j = 0; j < i; j++){
if ((vec[i] > vec[j]) &&
(subsequence[i].size() < subsequence[j].size() + 1))
subsequence[i] = subsequence[j];
}
subsequence[i].push_back(vec[i]);
}
vector<char> max = subsequence[0];
for (vector<char> x : subsequence)
if (x.size() > max.size())
max = x;
for (char character : max) cout << character;
cout << endl;
return 0;
}
int main() {
while (true) {
string input;
string line;
getline(cin,line);
if (line.empty()) return 0;
else {
istringstream is = istringstream(line);
is>>input;
vector<char> vec(input.begin(),input.end());
longest_increasing_subsequence(vec);
}
}
return 0;
}