Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm số ngăn nắp gần nhất và nhỏ hơn trong C ++

Giả sử chúng ta có một số n, chúng ta phải tìm số ngăn nắp gần nhất và nhỏ hơn của n. Vì vậy, một số được gọi là số gọn gàng, nếu tất cả các chữ số của nó được sắp xếp theo thứ tự không giảm. Vì vậy, nếu số là 45000, thì số gọn gàng gần nhất và nhỏ hơn sẽ là 44999.

Để giải quyết vấn đề này, chúng tôi sẽ duyệt qua số từ cuối, khi thuộc tính ngăn nắp bị vi phạm, sau đó chúng tôi giảm chữ số đi 1 và đặt tất cả chữ số tiếp theo là 9.

Ví dụ

#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;
}

Đầu ra

The tidy number is: 44999