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

배열 크기의 절반보다 큰 나눗셈 요소 뒤의 숫자를 계산하는 C++ 코드

<시간/>

n개의 요소가 있는 배열 A가 있다고 가정합니다. 배열의 각 숫자를 d로 나눈 후 배열에 표시되는 양수 값의 수가 배열 크기의 절반 이상이 되도록 0이 아닌 정수 d를 찾아야 합니다. . 조건을 만족하는 d 값이 여러 개인 경우. 답변이 여러 개인 경우 그 중 하나를 반환하십시오.

따라서 입력이 A =[10, 0, -7, 2, 6]과 같으면 출력은 4가 됩니다. 여기서 n =5 이므로 최소한 $\mathrm{\left \lceil 5/가 필요합니다. 2\right \rceil=3}나누기 후의 $ 요소. d =4인 경우 나눗셈 후 배열은 [2.5, 0, −1.75, 0.5, 1.5]가 되며 3개의 양수는 2.5, 0.5 및 1.5입니다.

단계

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

z :=0, f :=0n :=초기화 i :=0에 대한 A의 크기, i  0, then:(z를 1만큼 증가) a <0이면, (f를 1만큼 증가) 2 * z>=n이면, then:2 * f>=n일 때 1을 반환, 그렇지 않으면 2 * f>=n, then:-1을 반환합니다. 그렇지 않으면 0을 반환합니다. 

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#include 네임스페이스 std;int solve(vector A){ int z =0, f =0; 정수 n =A.크기(); for (int i =0; i  0) z++; if (a <0) f++; } if (2 * z>=n) 반환 1; else if (2 * f>=n) return -1; else return 0;}int main(){ vector A ={ 10, 0, -7, 2, 6 }; cout <<해결(A) < 

입력

{ 10, 0, -7, 2, 6 }

출력

1