我在试图找到一种方法从一系列数字中提取符合条件的最长序列:每个数字必须是其后面数字的前缀。从矢量中提取一定数量的数字
例如:对于系列:523,742,7421,12,123,1234,87
它应该显示12,123,1234
。
我想过把这个序列存储在一个向量中,然后迭代它,并移动满足另一个向量条件的数字。不过,我被困在选择(在上面的例子中12,123,1234
代替742, 7421
)的最长序列。这里是我写到目前为止代码:
bool prefix(int a, int b){
if ((b/10 - ((b % 10))/10) == a)
return 1;
else return 0;
}
vector<int> choose_sequence(vector<int> &series){
vector<int> right_sequence;
int count = 0;
for (int i = 0; i < series.size();){
for (int j = i + 1; j < series.size();){
if (prefix(series.at(i), series.at(j))){
right_sequence.push_back(series.at(i));
right_sequence.push_back(series.at(j));
i=j;
j++;
}
else
i++;
}
}
return right_sequence;
}
任何建议或修正的欢迎和最appreciate.Also,如果你知道使用另一种数据类型比载体更好的方法,请分享。
这是一个典型的动态规划问题。你有没有考虑过使用它? –