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

C/C++ 프로그램에서 발생하는 홀수 횟수를 찾는 방법은 무엇입니까?

<시간/>

이 프로그램에서는 배열에서 홀수 번 발생하는 숫자를 얻는 방법을 볼 것입니다. 다양한 접근 방식이 있습니다. 가장 쉬운 방법 중 하나는 ZOR 연산을 수행하는 것입니다. 숫자가 자신과 XOR되면 0이 됩니다. 따라서 숫자가 짝수 번 XOR되면 0이 되고 그렇지 않으면 숫자 자체가 됩니다.

이 솔루션에는 한 가지 문제가 있습니다. 둘 이상의 요소가 홀수번 발생하면 그 중 하나를 반환합니다.

알고리즘

getNumOccurredOdd(arr, n)

begin
   res := 0
   for each element e from arr, do
      res := res XOR e
   done
   return res
end

예시

#include <iostream>
using namespace std;
int getNumOccurredOdd(int arr[], int n) {
   int res = 0;
   for (int i = 0; i < n; i++)
      res = res ^ arr[i];
   return res;
}
int main() {
   int arr[] = {3, 4, 6, 5, 6, 3, 5, 4, 6, 3, 5, 5, 3};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout << getNumOccurredOdd(arr, n) << " is present odd number of times";
}

출력

6 is present odd number of times