ในปัญหานี้ เราจะได้รับ 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