Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ หาตัวเลขในช่วงที่ทุกหลักต่างกัน


คำอธิบายปัญหา

สมมติว่าเรามีตัวเลข 2 ตัวคือ l และ r ต้องการหาจำนวนเต็ม x ที่อยู่ระหว่าง l และ r (รวมทั้งสองข้าง) และทุกหลักใน x ต่างกันทั้งหมด

ตัวอย่าง: l = 211; r = 230 ผลลัพธ์คือ 213

ขั้นตอนการแก้ปัญหา

สำหรับ k := l ถึง r:
    h := แปลง k เป็นสตริง
    กำหนดเซต s
    สำหรับ i := 0 ถึง ความยาว h - 1:
        ใส่ h[i] ลงใน s
    ถ้าขนาดของ s เท่ากับขนาดของ h:
        คืนค่า h
คืนค่า "-1"

ตัวอย่างโค้ด 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;
    int r = 230;
    cout << solve(l, r) << endl;
}

อินพุต

211, 230

เอาต์พุต

213