From 49c519f9c6f790977957754b240704edb485ed81 Mon Sep 17 00:00:00 2001 From: vzsky Date: Thu, 7 Aug 2025 20:59:47 +0700 Subject: [PATCH] Add 0032 --- md/0032.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 md/0032.md diff --git a/md/0032.md b/md/0032.md new file mode 100644 index 0000000..2625345 --- /dev/null +++ b/md/0032.md @@ -0,0 +1,31 @@ +เก็บตัวเลขทั้งหมดที่มีไว้ในอาเรย์ชื่อ $\text{numbers}$ วิธีการสร้างตัวเลขที่น้อยที่สุดจากตัวเลขที่มีคือการนำเลขที่มีค่าประจำหลักน้อย ๆ ไว้ในหลักด้านหน้า เรียงไปหาเลขที่มีค่าประจำหลักมาก ๆ ในตำแหน่งหลัง ๆ + +แต่เราไม่สามารถใช้เลข 0 นำหน้าได้ เราจึงสร้างเลขที่น้อยที่สุดได้โดยเรียงเลขทั้งหมดจากน้อยไปมาก แล้วถ้าหากเลข 0 ขึ้นต้น เราจะสลับมันกับเลขที่ไม่ใช่ 0 ตัวที่เล็กที่สุดถัดไป เพื่อให้ได้เลขที่ถูกต้องและน้อยที่สุดตามโจทย์ + +ดังนั้น หลังจากเรียงเลขจากน้อยไปมากแล้ว เราจะสลับเลขที่อยู่ติดกับ 0 ทางขวาสุดมาไว้เป็นตัวแรก + +```cpp +#include +using namespace std; + +int numbers[1000]; + +int main () { + int n; cin >> n; + for (int i = 0; i < n; i++) { + cin >> numbers[i]; + } + + sort(numbers, numbers+n); + + for (int i = n-1; i >= 0; i--) { + if (numbers[i] == 0) swap(numbers[i], numbers[i+1]); + } + + for (int i = 0; i < n; i++) { + cout << numbers[i]; + } + + return 0; +} +```