本文共 1155 字,大约阅读时间需要 3 分钟。
为了解决这个问题,我们需要找到给定整数序列中的倒置子序列。倒置子序列的定义是在排序后的数组中,子序列中的元素是递减的。我们的任务是找到这个倒置子序列的左值和右值,如果没有这样的子序列,则输出0 0。
#include#include using namespace std;int main() { int n; cin >> n; vector v(n); for (int i = 0; i < n; ++i) { cin >> v[i]; } int i = -1; for (int i_pos = 0; i_pos < n - 1; ++i_pos) { if (v[i_pos] > v[i_pos + 1]) { i = i_pos; break; } } if (i == -1) { cout << "0 0" << endl; return; } int j = -1; for (int j_pos = n - 2; j_pos >= 0; --j_pos) { if (v[j_pos] > v[j_pos + 1]) { j = j_pos; break; } } if (j == -1) { cout << "0 0" << endl; return; } cout << v[j + 1] << ' ' << v[i] << endl; return;}
通过这种方法,我们可以高效地找到倒置子序列的左右端点,并解决问题。
转载地址:http://geefk.baihongyu.com/