Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 숫자 목록에서 가장 큰 사전 번호를 만드는 프로그램

<시간/>

nums라는 숫자 목록이 있다고 가정하고 가능한 가장 큰 숫자가 되도록 순서를 재정렬하고 이를 문자열로 반환해야 합니다.

따라서 입력이 nums =[20, 8, 85, 316]과 같으면 출력은 "88531620"이 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 배열 온도 정의
  • 숫자 단위의 각 항목 i에 대해:
    • i를 temp에 문자열로 삽입
  • 사전 순서에 따라 배열 temp를 정렬합니다(연결 b가 b 연결 a보다 큰 경우 두 문자열 a, b 확인)
  • temp:
      의 각 문자열에 대해
    • res :=res 연결 s
  • 반환 결과

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

#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