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

Số có chữ số liên tiếp (Sequential Digits) trong C++

Số có chữ số liên tiếp nếu mỗi chữ số lớn hơn chữ số trước đúng 1. Tìm tất cả số trong [low, high] thỏa mãn.

Ví dụ: low=100, high=300 → [123,234].

Thuật toán (Sinh tất cả số hợp lệ)

  1. Duyệt độ dài len từ 1 đến 9.
  2. Duyệt chữ số bắt đầu start từ 1 đến 10-len.
  3. Tạo số: x = 0; for k=0..len-1: x = x*10 + (start+k).
  4. Nếu trong khoảng → thêm vào kết quả.

Mã nguồn C++

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

class Solution {
public:
    vector sequentialDigits(int low, int high) {
        vector ans;
        for (int len=1; len<=9; len++) {
            for (int start=1; start+len-1<=9; start++) {
                int x=0;
                for (int k=0; k

Đầu vào / Đầu ra

Input: 500 5000

Output: [567, 678, 789, 1234, 2345, 3456, 4567]