我们得到一个长度为 N 的数组,其中只包含 0 和 1。值 1 表示汽车向西行驶,值 0 表示汽车向东行驶。
如果一对汽车 A 和汽车 B 满足 0<=A<B<N,我们将经过的汽车计为 1。这里A向东,B向西。最终,我们将计算 (0,1) 对,其中索引 0 小于索引 1。
让我们用例子来理解
输入- arr[] = {1,0,1,0,1}
输出- 通过的汽车对的数量是:3
说明- 索引 0 小于 1 的 (0,1) 对是 - (arr[1],arr[2]), (arr[1],arr[4]), (arr[3], arr[4])
输入- arr[] = {1,0,0,0,0}
输出- 通过的汽车对数为:0
说明- 不存在索引 0 小于 1 的 (0,1) 对。
我们将使用两种方法。第一种使用两个 for 循环的幼稚方法。开始遍历数组,当遇到0时从该点开始遍历数组再次结束,遇到1时增加计数。
取一个包含 0 和 1 的数组 arr[]。
函数 count_cars(int arr[], int size) 将数组和长度作为输入并返回通过的汽车数量。
取初始计数为 0。
从索引 i=0 到 i<length-1 遍历数组。
如果 arr[i] 为 0,则从索引 j=i+1 到 j<length 再次遍历数组。
对于每个 arr[j] 作为 1 增量计数作为对 (arr[i],arr[j]) 是 (0,1) 和 i<j。
最后我们将得到总数。
返回计数作为结果。
在这种方法中,我们将从末尾遍历数组。从最后开始计算所有的 1。对于每个前 0(从末尾开始),没有。对将是 1 的计数,即温度。
取一个包含 0 和 1 的数组 arr[]。
函数 count_cars(int arr[], int size) 将数组和长度作为输入并返回通过的汽车数量。
取初始计数为 0。
使用 while 循环从末尾遍历数组直到 size>=1。
如果 arr[size-1] 为 1,则为到目前为止找到的 1 的数量增加变量 temp。
否则它是 0(它的索引低于所有 1 的 remp)。对将是临时的。设置计数 = 计数 + 温度。
减少下一个元素的大小。
最后我们将得到总数。
返回计数作为结果。
#include<bits/stdc++.h> using namespace std; int count_cars(int arr[], int size){ int count = 0; for (int i=0; i<size-1; i++){ if(arr[i] == 0){ for (int j=i+1; j<size; j++) if (arr[j]==1){ count++; } } } return count; } int main(){ int arr[] = {1, 1, 0, 0, 1}; int size = sizeof(arr)/sizeof(arr[0]); cout<<"过车对数为: "<<count_cars(arr, size); return 0; }输出结果
如果我们运行上面的代码,它将生成以下输出 -
过车对数为: 2
#include<bits/stdc++.h> using namespace std; int count_cars(int arr[], int size){ int count = 0; int temp = 0; while (size >= 1){ if (arr[size-1] == 1){ temp++; } else{ count = count + temp; } size--; } return count; } int main(){ int arr[] = {1, 1, 0, 1, 1}; int size = sizeof(arr)/sizeof(arr[0]); cout<<"过车对数为: "<<count_cars(arr, size); return 0; }输出结果
如果我们运行上面的代码,它将生成以下输出 -
过车对数为: 2