ในปัญหานี้ เราจะได้รับ N จำนวนมาก หน้าที่ของเราคือค้นหาการเปลี่ยนแปลงที่น้อยที่สุดของจำนวนที่กำหนด
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
อินพุต
N = 4529016
ผลลัพธ์
1024569
แนวทางการแก้ปัญหา
วิธีแก้ปัญหาอย่างง่ายคือการจัดเก็บค่าจำนวนเต็มแบบยาวไว้ที่ astring จากนั้นเราจะเรียงลำดับสตริงที่เป็นผลลัพธ์ของเรา แต่ถ้ามีเลขศูนย์นำหน้า เราจะเลื่อนมันหลังจากค่าแรกที่ไม่ใช่ศูนย์
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
ตัวอย่าง
#include <bits/stdc++.h>
using namespace std;
string smallestNumPer(string s) {
int len = s.length();
sort(s.begin(), s.end());
int i = 0;
while (s[i] == '0')
i++;
swap(s[0], s[i]);
return s;
}
int main() {
string s = "4529016";
cout<<"The number is "<<s<<endl;
cout<<"The smallest permutation of the number is "<<smallestNumPer(s);
return 0;
} ผลลัพธ์
The number is 4529016 The smallest permutation of the number is 1024569