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

C++에서 M번 연결된 배열에서 K번째 최소 요소 찾기


배열 A와 또 다른 두 개의 정수 K와 M이 있다고 가정해 봅시다. 우리는 배열을 자신에 M번 연결한 후 K번째 최소 요소를 찾아야 합니다. 배열이 A =[3, 1, 2], K =4 및 M =3과 같으므로 A를 3번 연결하면 [3, 1, 2, 3, 1, 2, 3, 1이 됩니다. , 2], 여기서 4번째로 작은 요소는 2입니다.

이 문제를 해결하기 위해 배열 A를 정렬한 다음 배열의 인덱스((K – 1)/M)에 있는 값을 반환합니다.

예시

#include<iostream>
#include<algorithm>
using namespace std;
int findKSmallestNumber(int A[], int N, int M, int K) {
   sort(A, A + N);
   return (A[((K - 1) / M)]);
}
int main() {
   int A[] = { 3, 1, 2 };
   int M = 3, K = 4;
   int N = sizeof(A) / sizeof(A[0]);
   cout << K << "th smallest number after concatenating " << M << " times, is: "<<findKSmallestNumber(A, N, M, K);
}

출력

4th smallest number after concatenating 3 times, is: 2