Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tìm floor của mỗi phần tử trong chính mảng đó bằng C++

Mô tả bài toán

Cho mảng. Với mỗi phần tử, tìm floor trong mảng (phần tử lớn nhất ≤ nó, khác chính nó nếu có trùng). Nếu không có → -1.

Ví dụ

arr={3,1,5,7,8,2} → Output: 2 -1 3 5 7 1.

Giải thuật

Sao chép mảng, sắp xếp. Với mỗi phần tử gốc, dùng lower_bound trên mảng sắp xếp. Xử lý trường hợp trùng lặp: nếu phần tử là nhỏ nhất và không trùng → -1; nếu trùng → floor là chính nó; ngược lại floor là phần tử trước lower_bound.

Mã nguồn C++

#include <bits/stdc++.h>
using namespace std;

void printFloorEle(int arr[], int n) {
    vector sorted(arr, arr+n);
    sort(sorted.begin(), sorted.end());
    for (int i=0; i

Đầu ra

The Floor of every element of the given array is 2 -1 3 5 7 1