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

เลขลำดับใน C++


สมมติว่าเรามีจำนวนเต็มที่ซึ่งมีตัวเลขเรียงกันก็ต่อเมื่อแต่ละหลักในตัวเลขนั้นมากกว่าหนึ่งหลักก่อนหน้าหนึ่งหลัก เราต้องหารายการที่เรียงของจำนวนเต็มทั้งหมดในช่วง [ต่ำ สูง] ที่มีตัวเลขเรียงตามลำดับ ดังนั้นหากต่ำ =100 และสูง =300 ผลลัพธ์จะเป็น [123,234]

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • สร้างหนึ่งอาร์เรย์ res
  • สำหรับฉันอยู่ในช่วง 1 ถึง n
    • สำหรับ j :=1 จนถึง j + i – 1 <=9
      • x :=0
      • สำหรับ k ในช่วง 0 ถึง i – 1
        • x :=10x + (j + k)
      • ถ้าต่ำ
  • คืนสินค้า

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<auto> v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]"<<endl;
}
class Solution {
   public:
   vector<int> sequentialDigits(int low, int high) {
      vector <int> ans;
      for(int i = 1; i <= 9; i++){
         for(int j = 1; j + i - 1 <= 9; j++){
            int x = 0;
            for(int k = 0; k < i; k++){
               x = (x*10) + (j + k);
            }
            if(low <= x && x <= high){
               ans.push_back(x);
            }
         }
      }
      return ans;
   }
};
main(){
   Solution ob;
   print_vector(ob.sequentialDigits(500, 5000));
}

อินพุต

500
5000

ผลลัพธ์

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