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

หาการเรียงสับเปลี่ยนที่น้อยที่สุดของตัวเลขที่กำหนดใน C++

ในปัญหานี้ เราได้รับตัวเลขขนาดใหญ่ N งานของเราคือหาการเรียงสับเปลี่ยนที่น้อยที่สุดของตัวเลขที่กำหนด

มาดูตัวอย่างเพื่อเข้าใจปัญหา

Input

N = 4529016

Output

1024569

วิธีแก้ปัญหา

วิธีแก้ที่ง่ายคือเก็บค่าจำนวนเต็มยาวลงในสตริง จากนั้นเราจะเรียงลำดับสตริงซึ่งเป็นผลลัพธ์ของเรา แต่ถ้ามีศูนย์นำหน้า เราจะเลื่อนมันไปหลังค่าที่ไม่ใช่ศูนย์ตัวแรก

โปรแกรมแสดงการทำงานของวิธีแก้

ตัวอย่าง

#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