Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm phần tử nhỏ nhất thứ K từ một mảng được nối M lần trong C ++


Xét chúng ta có một mảng A và hai số nguyên khác K và M. Chúng ta phải tìm K phần tử nhỏ nhất sau khi nối mảng với chính M số lần. Giả sử mảng có dạng như A =[3, 1, 2], K =4 và M =3 nên sau khi ghép A 3 lần sẽ được [3, 1, 2, 3, 1, 2, 3, 1 , 2], phần tử nhỏ thứ 4 là 2 ở đây.

Để giải quyết vấn đề này, chúng ta sẽ sắp xếp mảng A, sau đó trả về giá trị, hiện tại chỉ mục ((K - 1) / M), của mảng.

Ví dụ

#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);
}

Đầu ra

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