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

Chương trình C++ tìm số trong khoảng [l, r] có các chữ số phân biệt

Cho hai số l và r. Tìm số nguyên x trong đoạn [l, r] sao cho tất cả chữ số của x đều khác nhau. Nếu không có, trả về -1.

Ví dụ

Với l = 211; r = 230, đầu ra 213.

Giải thuật

Duyệt k từ l đến r. Chuyển k thành chuỗi, dùng set kiểm tra các ký tự có trùng lặp không. Nếu kích thước set bằng độ dài chuỗi, trả về chuỗi đó. Hết vòng lặp trả về "-1".

Mã C++

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

string solve(int l, int r) {
    for (int k = l; k <= r; k++) {
        string h = to_string(k);
        set<char> s;
        for (int i = 0; i < h.size(); i++)
            s.insert(h[i]);
        if (s.size() == h.size())
            return h;
    }
    return "-1";
}

int main() {
    int l = 211, r = 230;
    cout << solve(l, r) << endl;
}

Đầu vào / Đầu ra

Input: 211, 230
Output: 213