在 C++ 中查詢需要移除的盒子數量
在這個問題中,我們給定了一個數組 arr[],其中每個元素代表一堆盒子(每個盒子高度為單位)。我們的任務是查詢需要移除的盒子數量。
這個人站在陣列索引 0 處,位於盒子堆的高度,他需要移動到陣列的末尾。從一堆移動到下一堆的條件是跳到下一個。
只有當下一堆的高度相同或低於當前堆的高度時,才能跳躍。如果下一堆的高度更高,則需要移除下一堆中的盒子,直到高度相等。我們需要找到從第一個盒子到最後一個盒子移除的盒子的總數。
讓我們舉一個例子來理解這個問題,
Input : arr[] = {5, 7, 3 , 1, 2}
Output : 3解釋
最初,這個人位於高度 5 處。
步驟 1 - 要到達高度為 7 的第二個位置,這個人需要移除 2 個盒子。
步驟 2 - 要到達高度為 3 的第三個位置,不需要移除任何盒子。
步驟 3 - 要到達高度為 1 的下一個位置,不需要移除任何盒子。
步驟 4 - 要到達高度為 2 的下一個位置,需要移除一個盒子。這使得移除的盒子總數等於 3。
解決方案方法
解決這個問題的一個簡單方法是從頭到尾遍歷陣列,並檢查下一個元素是否大於當前元素。如果是,則將其差值新增到boxesRemoved變數中,該變數儲存將要移除的盒子的總數。最後,我們將返回boxesRemoved。
示例
程式說明我們解決方案的工作原理
#include <iostream>
using namespace std;
int findBoxesRemoved(int arr[], int n){
int boxesRemoved = 0;
for (int i = 0; i < n-1; i++) {
if (arr[i] < arr[i+1])
boxesRemoved += (arr[i+1] - arr[i]);
}
return boxesRemoved;
}
int main(){
int arr[] = { 5, 7, 3 , 1, 2, 6 };
int n = sizeof(arr) / sizeof(arr[0]);
cout<<"The total number of boxes to be removed to reach the end is "<<findBoxesRemoved(arr, n);
return 0;
}輸出
The total number of boxes to be removed to reach the end is 7
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP