Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 지나가는 자동차 쌍 수 세기

<시간/>

0과 1만 포함하는 길이 N의 배열이 제공됩니다. 값 1은 서쪽 방향으로 가는 자동차를 나타내고 값 0은 동쪽 방향으로 가는 자동차를 나타냅니다.

자동차 A와 자동차 B의 쌍이 0<=A

예를 들어 이해하자

입력 - 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까지 배열 탐색

  • arr[i]가 0이면 인덱스 j=i+1에서 j까지 배열을 다시 탐색합니다.

  • 각 arr[j]에 대해 1 증분으로 쌍(arr[i],arr[j])은 (0,1)이고 i입니다.

  • 마침내 우리는 총계를 얻게 될 것입니다.

  • 결과로 카운트를 반환합니다.

효율적인 접근

이 접근 방식에서는 끝에서 배열을 탐색합니다. 끝에서 모두 1을 센다. 각 처음 0(끝부터)에 대해 아니요. 쌍의 수는 임시인 1로 계산됩니다.

  • 0과 1을 포함하는 배열 arr[]를 사용합니다.

  • count_cars(int arr[], int size) 함수는 배열과 길이를 입력으로 받아 지나가는 차량의 수를 반환합니다.

  • 초기 카운트를 0으로 합니다.

  • 크기>=1까지 while 루프를 사용하여 끝에서 배열을 탐색합니다.

  • arr[size-1]이 1이면 지금까지 찾은 1만큼 변수 temp를 증가시킵니다.

  • 그렇지 않으면 0입니다(remp인 모든 1보다 낮은 인덱스를 가짐). 쌍은 임시 것입니다. 카운트 =카운트+온도 설정.

  • 다음 요소의 크기를 줄입니다.

  • 마침내 우리는 총계를 얻게 될 것입니다.

  • 결과로 카운트를 반환합니다.

예(순진한 접근 방식)

#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 of passing car pairs are: "<<count_cars(arr, size);
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

Count of passing car pairs are: 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 of passing car pairs are: "<<count_cars(arr, size);
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

Count of passing car pairs are: 2