在这个问题上,我们得到了N个元素的数组。我们的任务是在删除时间> =等待时间时从数组中找到最大删除量。
因此,这里我们将删除数组的元素。数组元素的值表示删除时间(从数组中删除元素所花费的时间)。
元素有一个等待时间,这是它必须等待直到被删除的时间。
仅当删除时间大于必须等待的时间时,才可以删除该元素。
我们必须找到可以从数组中删除的最大元素数。数组中元素的顺序可以根据要求进行更改。
让我们举个例子来了解这个问题,
输入-数组= {12,3,11,7,5}
输出-2
说明-
首先,我们将数组重新排序为升序-
数组将为{3,5,7,11,12}
现在,我们将一一删除元素
移除3-等待时间为0,小于移除时间(3)。可以拆卸。
移除5-等待时间为3,小于移除时间(5)。可以拆卸。
移除7-等待时间为8,大于移除时间(7)。无法移除。
为了解决这个问题,我们将逐一排序并删除检查元素。
Step 1: Sort the array in ascending order. Step 2: For every element in the array, Do: Step 3: Find waiting Time (sum of removal time of all elements before the element). Step 4: if (waiting time <= removal time ) step 4.1: remove the element and increase the remove count. Step 5: else: break. Step 6: print the number of elements removed.
在C ++中,当删除时间> =等待时间时,从数组中找到最大删除量的程序
#include <bits/stdc++.h> using namespace std; int countRemovedElements(int arr[], int n){ sort(arr, arr + n); int removeCount = 0; int waitTime = 0; for (int i = 0; i < n; i++) { if (arr[i] >= waitTime) { removeCount++; waitTime += arr[i]; } else break; } return removeCount; } int main(){ int arr[] = { 12, 3, 11, 7 , 5 }; int n = sizeof(arr) / sizeof(arr[0]); cout<<"The maximum number of elements that can be removed from the array is "<<countRemovedElements(arr, n); return 0; }
输出结果
The maximum number of elements that can be removed from the array is 2