假設我們有一個包含 n 個元素的陣列 A。我們可以多次執行這些操作-
選擇任何正整數k
選擇任何位置並在該位置插入k
#這樣,序列就改變了,我們在下一個運算中繼續這個序列。
我們必須找到滿足條件所需的最少運算元:對於0 到n-1 範圍內的所有i,A[i]
因此,如果輸入是例如A = [1, 2, 5, 7, 4],那麼輸出將為3,因為我們可以執行以下操作: [1,2,5,7,4]到[1,2,3,5 ,7,4] 到[1,2,3,4,5,7,4] 到[1,2,3,4,5,3,7,4]。
為了解決這個問題,我們將按照以下步驟操作-
maxj := 0 n := size of A for initialize i := 0, when i < n, update (increase i by 1), do: maxj := maximum of maxj and (A[i] - i - 1) return maxj
讓我們看一下以下實作以獲得更好的理解−
#include <bits/stdc++.h> using namespace std; int solve(vector<int> A) { int maxj = 0; int n = A.size(); for (int i = 0; i < n; i++) { maxj = max(maxj, A[i] - i - 1); } return maxj; } int main() { vector<int> A = { 1, 2, 5, 7, 4 }; cout << solve(A) << endl; }
{ 1, 2, 5, 7, 4 }
3
以上是C++程式:計算將索引小於值的元素放置所需的操作次數的詳細內容。更多資訊請關注PHP中文網其他相關文章!