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

โปรแกรมสร้างตัวเลขพจนานุกรมที่ใหญ่ที่สุดจากรายการตัวเลขในภาษา C++


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums เราต้องจัดเรียงใหม่เพื่อให้ได้จำนวนที่มากที่สุดและส่งคืนเป็นสตริง

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[20, 8, 85, 316] เอาต์พุตจะเป็น "88531620"

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • กำหนดอุณหภูมิอาร์เรย์
  • สำหรับแต่ละรายการ i เป็น nums:
    • ใส่ i ลงใน temp เป็นสตริง
  • จัดเรียงอุณหภูมิอาร์เรย์ตามลำดับศัพท์ (ตรวจสอบสองสตริง a, b เมื่อต่อ b มากกว่า b ต่อ a หรือไม่)
  • สำหรับแต่ละสตริงใน temp:
    • res :=res ต่อกัน
  • ผลตอบแทน

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;

static bool cmp(string a, string b) {
   return (a + b) >= (b + a);
}
string solve(vector<int>& nums) {
   vector<string> temp;
   for (int i : nums) {
      temp.push_back(to_string(i));
   }
   sort(temp.begin(), temp.end(), cmp);
   string res;
   for (string s : temp) {
      res += s;
   }
   return res;
}

int main(){
   vector<int> v = {20, 8, 85, 316};
   cout << solve(v);
}

อินพุต

{20, 8, 85, 316}

ผลลัพธ์

88531620