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

พิมพ์ตัวเลขน้อยกว่าตัวเลขที่กำหนดอย่างเคร่งครัดเพื่อให้ตัวเลขทั้งหมดมีความชัดเจนใน C++


ในปัญหานี้ เราได้รับตัวเลข n งานของเราคือการพิมพ์จำนวนที่มากที่สุดซึ่งน้อยกว่า n เพื่อให้ตัวเลขทั้งหมดมีความชัดเจน

มาดูตัวอย่างทำความเข้าใจปัญหากัน

Input: n = 2332
Output: 2319

เพื่อแก้ปัญหานี้ เรากลับการนับตัวเลข เช่น จาก n เป็น 0 และตรวจสอบตัวเลขที่มีตัวเลขต่างกัน หากค่าการนับปัจจุบันตรงตามเงื่อนไข ให้พิมพ์และสิ้นสุดการวนซ้ำ มิฉะนั้นให้วนซ้ำ จำนวนครั้งสูงสุดที่ลูปจะทำงานจะน้อยกว่า n เสมอ

ตัวอย่าง

โปรแกรมที่จะใช้โซลูชันของเรา

#include <bits/stdc++.h>
using namespace std;
int findDistinctDigitNumber(int n) {
   for (int i = n - 1; i>=0 ; i--) {
      int count[10] = { 0 };
      int x = i;
      int count1 = 0, count2 = 0;
      while (x) {
         count[x % 10]++;
         x /= 10;
         count1++;
      }
      for (int j = 0; j < 10; j++) {
         if (count[j] == 1)
            count2++;
      }
      if (count1 == count2)
      return i;
   }
}
int main() {
   int n = 44324;
   cout<<"Number less than "<<n<<" with all digits distinct are : "<<findDistinctDigitNumber(n);
   return 0;
}

ผลลัพธ์

Number less than 44324 with all digits distinct are : 43987