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

ค้นหาตัวเลขที่ใกล้เคียงที่สุดและเล็กกว่าใน C++


สมมุติว่าเรามีเลข n, เราต้องหาจำนวนที่ใกล้เคียงที่สุดและเล็กกว่าของ n ตัวเลขจึงเรียกว่า เลขเป็นระเบียบ ถ้าตัวเลขทั้งหมดเรียงตามลำดับที่ไม่ลดลง ดังนั้นหากตัวเลขคือ 45000 ตัวเลขที่ใกล้เคียงที่สุดและเล็กกว่าจะเป็น 44999

เพื่อแก้ปัญหานี้ เราจะสำรวจตัวเลขจากจุดสิ้นสุด เมื่อทรัพย์สินที่เป็นระเบียบเรียบร้อยถูกละเมิด จากนั้นเราจะลดหลักลง 1 และทำให้หลักต่อมาทั้งหมดเป็น 9

ตัวอย่าง

#include<iostream>
using namespace std;
string tidyNum(string number) {
   for (int i = number.length()-2; i >= 0; i--) {
      if (number[i] > number[i+1]) {
         number[i]--;
         for (int j=i+1; j<number.length(); j++)
            number[j] = '9';
      }
   }
   return number;
}
int main() {
   string str = "45000";
   string num = tidyNum(str);
   cout << "The tidy number is: " << num;
}

ผลลัพธ์

The tidy number is: 44999