C++로 구현된 주어진 연산을 사용하여 배열을 정수로 줄입니다.
정수 변수 Number를 입력으로 제공합니다. 1부터 Number까지의 범위에 있는 요소를 포함하는 배열을 고려해 보겠습니다. 요소의 순서는 임의적일 수 있습니다. 배열에서 1번 연산을 수행하면 연산은 다음과 같습니다.
배열에서 두 요소 A와 B를 선택합니다.
배열에서 A와 B를 제거합니다.
A와 B를 바꿉니다. 제곱합이 배열에 추가됩니다.
결국 우리는 단일 정수 값을 얻습니다. 목표는 해당 요소에 대해 가능한 최대값을 찾는 것입니다.
Using Priority Queue
최종 결과를 최대화하려면 A와 B를 선택하여 최대한 크게 만들어야 합니다.
가장 큰 A와 B를 찾기 위해 우선순위 큐를 사용하여 그 안에 요소 값을 저장합니다.
우선순위 대기열은 요소를 내림차순으로 저장합니다.
최상위 요소의 값이 가장 큰 등입니다. 따라서 두 요소를 모두 팝한 후 해당 사각형을 다시 대기열에 넣습니다.
원하는 결과를 얻으려면 1번을 누르고 누르세요.
예
입력 - 숫자=2
출력 - 배열 축소 후 단일 요소: 5
설명 - 배열의 요소가 [1 2]라고 가정
우선순위 큐 : 2 1
A=5, B=4 : A2+B2=1+4=5
마지막 요소 : 5
Input - Number=5
출력 - 배열 축소 후 단일 요소: 5
설명- 배열의 요소가 [5 1 2 4 3]
우선순위 큐에 삽입된 후: 5 4 3 2 1
A=5라고 가정합니다. , B=4: A 2+B2=25+16=41 : 41 3 2 1
A=41, B=3 : A2+B2=1681+9=1690 : 1690 2 1
A=1690, B=2 : A2+B2=1681+4=2856104 : 2856104 1
A=2856104 , B=1 : A2+B2 =1187163712+1= 1187163713 : 1187163713
마지막 요소: 1187163713
아래 프로그램에서 사용한 방법은 다음과 같습니다
이 방법에서는 배열의 요소를 내림차순으로 저장하도록 우선순위 큐를 설정했습니다. 두 개의 가장 큰 요소를 팝하고 하나의 값만 남을 때까지 해당 제곱의 합을 다시 큐에 푸시합니다.
입력 변수 Number를 가져옵니다.
결과의 데이터 유형을 긴 정수로 설정 - lli
함수 축소Array(int Num)는 입력 숫자를 받아들이고 위 연산을 사용하여 계산된 가장 큰 단일 정수를 반환합니다.
우선순위 대기열 pQueue를 사용하세요.
while 루프를 사용하여 1부터 N까지의 숫자를 pQueue에 채웁니다.
i
이제 pQueue는 1부터 N까지의 정수를 크기 N으로 내림차순으로 저장합니다.
while 루프를 사용하여 크기가 1보다 클 때까지 pQueue를 순회합니다.
최대값을 var1=pQueue.top()으로 설정하고 팝합니다.
다음 최대값을 var2=pQueue.top()으로 설정하고 팝합니다.
var1을 정사각형으로 설정하고 var2를 정사각형으로 설정합니다.
var1+var2를 pQueue에 다시 푸시합니다.
while 루프가 끝나면 최상위 요소를 반환합니다.
메인 함수에서 결과를 인쇄하세요.
Example
#include <bits/stdc++.h> using namespace std; #define lli long long int int reduceArray(int Num){ priority_queue<lli> pQueue; int i=1; while(i<=Num){ pQueue.push(i); i=i+1; } while (pQueue.size() > 1) { lli var1 = pQueue.top(); pQueue.pop(); lli var2 = pQueue.top(); pQueue.pop(); var1=var1*var1; var2=var2*var2; pQueue.push(var1+var2); } return pQueue.top(); } int main(){ int Number = 5; cout<<"Single element after array reduction: "<<reduceArray(Number); return 0; }
Output
위 코드를 실행하면 다음과 같은 출력이 생성됩니다
Single element after array reduction: 1187163713
위 내용은 C++로 구현된 주어진 연산을 사용하여 배열을 정수로 줄입니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 배열에서 중복 요소를 제거하기 위해 foreach 루프를 사용하는 방법은 다음과 같습니다. 배열을 순회하고 요소가 이미 존재하고 현재 위치가 첫 번째 항목이 아닌 경우 삭제합니다. 예를 들어, 데이터베이스 쿼리 결과에 중복된 레코드가 있는 경우 이 방법을 사용하면 이를 제거하고 중복된 레코드가 없는 결과를 얻을 수 있습니다.

PHP에서 배열을 깊게 복사하는 방법에는 json_decode 및 json_encode를 사용한 JSON 인코딩 및 디코딩이 포함됩니다. array_map 및 clone을 사용하여 키와 값의 전체 복사본을 만듭니다. 직렬화 및 역직렬화를 위해 직렬화 및 역직렬화를 사용합니다.

PHP 배열 키 값 뒤집기 방법의 성능 비교는 array_flip() 함수가 대규모 배열(100만 개 이상의 요소)에서 for 루프보다 더 나은 성능을 발휘하고 시간이 덜 걸리는 것을 보여줍니다. 키 값을 수동으로 뒤집는 for 루프 방식은 상대적으로 시간이 오래 걸립니다.

다차원 배열 정렬은 단일 열 정렬과 중첩 정렬로 나눌 수 있습니다. 단일 열 정렬은 array_multisort() 함수를 사용하여 열별로 정렬할 수 있습니다. 중첩 정렬에는 배열을 순회하고 정렬하는 재귀 함수가 필요합니다. 실제 사례로는 제품명별 정렬, 판매량 및 가격별 복합 정렬 등이 있습니다.

PHP에서 배열 전체 복사를 수행하는 가장 좋은 방법은 json_decode(json_encode($arr))를 사용하여 배열을 JSON 문자열로 변환한 다음 다시 배열로 변환하는 것입니다. unserialize(serialize($arr))를 사용하여 배열을 문자열로 직렬화한 다음 새 배열로 역직렬화합니다. RecursiveIteratorIterator를 사용하여 다차원 배열을 재귀적으로 순회합니다.

PHP의 array_group_by 함수는 키 또는 클로저 함수를 기반으로 배열의 요소를 그룹화하여 키가 그룹 이름이고 값이 그룹에 속한 요소의 배열인 연관 배열을 반환할 수 있습니다.

목차 Astar Dapp 스테이킹 원리 스테이킹 수익 잠재적 에어드랍 프로젝트 해체: AlgemNeurolancheHealThreeAstar Degens DAOVeryLongSwap 스테이킹 전략 및 운영 "AstarDapp 스테이킹"이 올해 초 V3 버전으로 업그레이드되었으며 스테이킹 수익에 많은 조정이 이루어졌습니다. 규칙. 현재 첫 번째 스테이킹 주기는 종료되었으며 두 번째 스테이킹 주기의 "투표" 하위 주기가 막 시작되었습니다. '추가 보상' 혜택을 받으려면 이 중요한 단계(6월 26일까지 지속 예정, 5일 미만 남았음)를 파악해야 합니다. 아스타 스테이킹 수익을 자세하게 분석해보겠습니다.

Ele.me는 다양한 종류의 음식을 온라인으로 선택하고 주문할 수 있는 소프트웨어입니다. 판매자는 주문을 받은 후 즉시 주문을 처리합니다. 사용자는 소프트웨어를 통해 WeChat을 연결할 수 있습니다. 작동 방법을 알아보려면 PHP 중국어 웹사이트를 확인하세요. Ele.me를 WeChat에 바인딩하는 방법: 1. 먼저 Ele.me 소프트웨어를 열고 홈페이지에 들어간 후 오른쪽 하단에 있는 [내]를 클릭합니다. 2. 그런 다음 내 페이지에서 [계정]을 클릭합니다. ] 왼쪽 상단에 있는 3. 그런 다음 휴대폰, WeChat, Alipay 및 Taobao를 연결할 수 있는 개인 정보 페이지로 이동합니다. 4. 마지막 클릭 후 필요한 WeChat 계정을 선택합니다. WeChat 인증 페이지에 접속하고 [허용]을 클릭하세요.
