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

C++에서 배열 회전의 모든 요소를 ​​연결하여 최대 수

<시간/>

우리는 숫자의 원형 배열을 받습니다. 원형 배열은 첫 번째 요소가 마지막 요소 바로 옆에 있는 것처럼 처리되도록 요소가 정렬된 배열입니다. 대기열을 구현하는 데 사용됩니다.

각 요소는 같거나 다른 자릿수를 가집니다. 목표는 필요한 경우 요소의 회전을 사용하여 숫자를 연결하여 가능한 가장 높은 숫자를 만드는 것입니다. 우리는 모든 요소의 가장 왼쪽 숫자 중에서 가장 왼쪽 숫자를 찾아 이를 수행합니다. 가장 왼쪽 숫자가 가장 높은 숫자가 첫 번째 자리를 차지합니다.

  • 첫 번째 위치에 있으면 인덱스 1부터 n-1까지의 모든 숫자가 그대로 배치됩니다.

  • 그 사이 어딘가에 있고 인덱스가 i인 경우 인덱스 i+1 ~ n-1에 있는 모든 항목이 먼저 추가되고 인덱스 0 ~ i-1에 있는 항목이 추가됩니다.

  • 마지막 것이라면 인덱스 0부터 i-1까지의 모든 항목이 그 뒤에 추가됩니다.

입력

Arr[] = { 121, 43, 65, 32 }

출력

Highest number: 653212143

설명 − 맨 왼쪽의 가장 높은 자리는 6입니다. 첫 번째 위치에 65를 배치하고 32를 배치한 다음 121,43을 배치합니다. Arr[]은 원형 배열이므로

입력

Arr[] = { 1101, 9, 321, 77 }

출력

Highest number: 9321771101

설명 − 맨 왼쪽의 가장 높은 자리는 9321771101입니다. 첫 번째 위치에 9를 배치하고 321, 77, 1101을 차례로 배치합니다. Arr[]은 원형 배열이므로

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 배열 arr[]는 숫자를 저장합니다.

  • Largets(int arr[],int n) 함수는 배열과 길이 n을 입력으로 받아 가장 높은 수를 출력합니다.

  • 변수 maxx는 가장 왼쪽에 있는 숫자를 저장하는 데 사용되며 0으로 초기화됩니다.

  • Pos는 maxx의 인덱스를 저장하는 데 사용됩니다.

  • i=0에서 n까지 시작하여 각 arr[i]의 가장 왼쪽 숫자를 0이 될 때까지 10으로 나누어 찾습니다. 매번 나머지는 단위 자리의 숫자를 나타냅니다.

  • 현재 해당 숫자가 가장 높은 경우 num==0일 때(rem이 가장 왼쪽 숫자를 가짐을 의미), updatemaxx 및 pos.

  • 인덱스 pos에서 배열 끝까지 요소를 인쇄한 다음 다시 인덱스 0에서 pos-1까지 요소를 인쇄합니다.

#include <bits/stdc++.h>
using namespace std;
void Largest(int arr[], int n){
   int maxx = 0;
   int pos = 0; //index of number with highest leftmost digit
   for (int i = 0; i < n; i++) {
      int num = arr[i];
      // check for the last digit
      while (num!=0) {
         int rem = num % 10;
         num = num / 10;
         if (num == 0) {
            if (maxx < rem) {
               maxx = rem;
               pos = i;
            }
         }
      }
   }
   // print the largest number
   cout<<"Largest number by concatenation: ";
   for (int i = pos; i < n; i++)
      cout << arr[i];
   for (int i = 0; i < pos; i++)
      cout << arr[i];
}
int main(){
   int Arr[] = { 12,34,56,98 };
   int size=4;
   Largest(Arr,size);
   return 0;
}

출력

Largest number by concatenation: 98123456