문제 설명 N 요소의 배열 arr[]와 K
문제 설명 부호 없는 숫자가 주어졌을 때 주어진 부호 없는 숫자의 비트를 사용하여 만들 수 있는 최대 수를 구하십시오. 입력 숫자가 8이면 이진 표현은 다음과 같습니다. 00000000000000000000000000001000 최대화하려면 MSB를 1로 설정합니다. 그러면 숫자는 2147483648이 되고 이진 표현은 -입니다. 10000000000000000000000000000000 알고리즘 1. Count number of set bits in the binary representation of a given number
문제 설명 길이가 L인 막대가 주어졌을 때, 작업은 길이가 p, q, r인 세그먼트의 총 수가 최대가 되도록 막대를 자르는 것입니다. 세그먼트의 길이는 p, q 및 r일 수 있습니다. l =15, p =2, q =3 및 r =5이면 다음과 같이 7개의 세그먼트를 만들 수 있습니다. - {2, 2, 2, 2, 2, 2, 3} 알고리즘 동적 프로그래밍을 사용하여 이 문제를 해결할 수 있습니다. 1. Initialize dp[] array to 0 2. Iterate till the length of the rod. For ever
문제 설명 N개의 정수 배열이 주어집니다. 배열의 요소를 재정렬할 수 있습니다. 작업은 Σarr[i]*i의 최대값을 찾는 것입니다. 여기서 i =0, 1, 2, .. n – 1입니다. 입력 배열 ={4, 1, 6, 2}인 경우 정렬된 순서로 요소를 재배열하면 최대 합은 28이 됩니다. {1, 2, 4, 6} = (1 * 0) + (2 * 1) + (4 * 2) + (6 * 3) = 28 알고리즘 1. Sort array in ascending order 2. Iterate over array and multiply each ar
문제 설명 0이 아닌 세 개의 정수 a, b, c가 주어집니다. 작업은 순서에 관계없이 덧셈과 곱셈 기호를 넣어 가능한 최대값을 찾는 것입니다. 정수의 재배열은 허용되지만 덧셈과 곱셈 기호는 한 번만 사용해야 합니다. a =1, b =3, c =5이면 최대값은 다음과 같이 20이 됩니다. (1 + 3) * 5 = 20 알고리즘 1. If all numbers are positive, then add two small numbers and multiply result with larger one 2. If only two num
문제 설명 주어진 배열에서 arr[]은 (arr[i] – i) – (arr[j] – j)의 최대값을 찾습니다. 여기서 i는 j와 같지 않습니다. 여기서 i와 j는 0에서 n-1까지 다양하며 n은 입력 배열 arr[]의 크기입니다. 입력 배열이 {7, 5, 10, 2, 3}이면 다음과 같이 최대값 9개를 얻을 수 있습니다. (element 10 – index 2) - (element 2 – index 3) (10 – 2) – (2 – 3) = 8 – (-1) = 9
두 개의 정렬된 배열과 숫자 x가 있다고 가정하면 합이 x에 가장 가까운 쌍을 찾아야 합니다. 그리고 쌍에는 각 배열의 요소가 있습니다. 두 개의 배열 A1 [0..m-1]과 A2 [0..n-1]와 또 다른 값 x가 있습니다. (A1[i] + A2[j] – x)의 절대값이 최소가 되도록 A1[i] + A2[j] 쌍을 찾아야 합니다. 따라서 A1 =[1, 4, 5, 7]이고 A2 =[10, 20, 30, 40] 및 x =32이면 출력은 1과 30이 됩니다. A1의 왼쪽부터 A2의 오른쪽부터 시작하여 다음 단계에 따라 해당 쌍을 찾습
두 명의 친구가 있고 이제 그들은 그들의 유대감을 시험하려고 한다고 생각해 보십시오. 그래서 그들은 얼마나 호환되는지 확인할 것입니다. 숫자 n이 주어지면 1..n부터 번호가 매겨집니다. 그리고 그들은 숫자의 순위를 매기도록 요청받습니다. 그들은 그들 사이의 호환성 차이를 찾아야 합니다. 호환성 차이는 기본적으로 동일한 영화의 상대적 순위에서 일치하지 않는 수입니다. 따라서 A =[3, 1, 2, 4, 5]이고 B =[3, 2, 4, 1, 5]이면 출력은 2가 됩니다. 호환성 차이는 2입니다. 2와 4이지만 다른 사람들은 그 뒤에
C++에서는 다른 네임스페이스를 사용합니다. 자체 네임스페이스를 만들 수도 있습니다. 예를 들어 일반적으로 std라는 표준 네임스페이스를 사용합니다. 다음과 같은 구문을 작성합니다. using namespace std; 표준 라이브러리에는 컨테이너, 알고리즘 등과 같은 애플리케이션을 구축하는 데 사용하는 공통 기능이 포함되어 있습니다. 이러한 이름이 사용되는 이름이 공개된 경우(예:큐 클래스를 전역적으로 정의한 경우) 충돌 없이 같은 이름을 다시 사용합니다. 그래서 그들은 이 변경 사항을 포함하기 위해 std라는 네임스페이스를 만
우리가 알고 있듯이 함수 오버로딩은 객체 지향 언어의 핵심 기능 중 하나입니다. 같은 이름의 함수를 사용할 수 있습니다. 매개변수 집합이 다릅니다. 여기서는 C++ 클래스의 생성자를 오버로드하는 방법을 살펴보겠습니다. 생성자 오버로딩에는 몇 가지 중요한 개념이 있습니다. 오버로드된 생성자는 동일한 이름과 다른 수의 인수를 가져야 합니다. 전달된 인수의 수와 유형에 따라 생성자가 호출됩니다. 객체를 생성하는 동안 인수를 전달해야 합니다. 그렇지 않으면 생성자가 호출될 생성자를 이해할 수 없습니다. 예 #include <ios
추출된 문자가 구분 문자가 되거나 n 문자가 s에 기록될 때까지 형식화되지 않은 입력으로 스트림에서 문자를 추출하고 c-문자열로 s에 저장하는 데 사용됩니다(종료 널 문자 포함). 선언은 다음과 같습니다. basic_istream& getline (char_type* s, streamsize n ); basic_istream& getline (char_type* s, streamsize n, char_type delim); 매개변수는 추출된 문자가 c_string으로 저장되는 문자 배열에 대한 포인터입니다. 다음 매
텍스트 편집기 이것은 프로그램을 입력하는 데 사용됩니다. 몇 가지 편집기의 예로는 Windows 메모장, OS 편집 명령, Brief, Epsilon, EMACS 및 vim 또는 vi가 있습니다. 텍스트 편집기의 이름과 버전은 운영 체제에 따라 다를 수 있습니다. 예를 들어 메모장은 Windows에서 사용하고 vim 또는 vi는 Linux 또는 UNIX뿐만 아니라 Windows에서 사용할 수 있습니다. 편집기로 만든 파일을 소스 파일이라고 하며 C++의 경우 일반적으로 .cpp, .cp 또는 .c 확장자로 이름이 지정됩니다.
여기에서 우리는 C++에서 Shuffle과 random_shuffle을 볼 것입니다. 이 함수는 C++에서 배열 요소를 섞는 데 사용됩니다. 배열 대신 벡터를 사용할 수도 있습니다. 사용법은 비슷합니다. 먼저 random_shuffle()을 보자. [왼쪽, 오른쪽] 범위의 요소를 무작위로 재배열하는 데 사용됩니다. 이 기능은 각 요소의 위치를 무작위로 선택한 위치의 위치와 무작위로 교환합니다. 모든 경우에 어떤 요소가 사용되는지 알려주는 임의 생성기 함수를 제공할 수 있습니다. 일부를 제공하지 않으면 자체 임의 생성기 기능을
여기에서 이것이 C++ STL의 upper_bound() 함수임을 알 수 있습니다. 이 함수는 val 다음에 오는 것으로 간주되는 컨테이너의 첫 번째 요소를 가리키는 반복자를 반환합니다. 구문은 다음과 같습니다. iterator upper_bound (const value_type& val); const_iterator upper_bound (const value_type& val) const; 반환 값은 val 다음에 오는 것으로 간주되는 컨테이너의 첫 번째 요소를 가리키는 반복자입니다. 예시 #include &l
n개의 요소가 있는 배열 A[]가 있다고 가정합니다. B[i]와 B[i + 1]의 GCD가 A[i]가 되도록 크기가 n+1인 다른 배열 B[]를 찾아야 합니다. 여러 솔루션이 있는 경우 배열 합이 최소인 솔루션 중 하나를 인쇄하십시오. 따라서 A =[1, 2, 3]이면 출력은 [1, 2, 6, 3]이 됩니다. =A[i + 1], A[i + 2]의 LCM입니다. 최소 합을 원하므로 B[i + 2]의 최소값을 원하므로 B[i + 2] – A[i + 2] 및 A[i + 3]의 LCM 예시 #include <iostream> #
n개의 양의 요소가 있는 배열 A[]가 있다고 가정합니다. B[i]가 A[i]를 제외한 A[]의 모든 요소의 XOR이 되도록 다른 배열 B를 만들어야 합니다. 따라서 A =[2, 1, 5, 9]이면 B =[13, 14, 10, 6] 이를 해결하려면 먼저 A의 모든 요소에 대한 XOR을 찾아 변수 x에 저장한 다음 A[i]의 각 요소에 대해 B[i] =x XOR A[i] 예시 #include <iostream> using namespace std; void findXOR(int A[], int n) { &nb
설명 (2 * n – 1)개의 정수 배열이 있습니다. 배열에서 정확히 n개 요소의 부호를 변경할 수 있습니다. 즉, 정확히 n개의 배열 요소를 선택하고 각각에 -1을 곱할 수 있습니다. 배열의 최대 합을 찾습니다. 예시 입력 배열이 {-2, 100, -3}이면 -2와 -3의 최대 변화 부호를 얻을 수 있습니다. 부호 배열을 변경하면 -가 됩니다. {2, 100, 3}이고 이 배열의 최대 합은 105입니다. 알고리즘 음수 계산 숫자의 절대값을 취하여 배열의 합을 계산합니다. 숫자의 절대값을 취하여 배열의 최소값 찾기 아니오인지
문제 설명 arr[i] 예시 입력 배열이 {300, 400, 400, 300}이면 재배열된 배열은 - arr[i]인 2개의 인덱스를 얻습니다. 따라서 답은 2입니다. 알고리즘 모든 요소가 고유한 경우 대답은 단순히 n-1입니다. 여기서 n은 배열의 요소 수입니다. 반복되는 요소가 있는 경우 답은 n – maxFrequency입니다. 예시 이제 예를 살펴보겠습니다 - #include <bits/stdc++.h> #define MAX 1000 using namespace std; int getMaxIndices(i
문제 설명 크기가 N인 두 개의 배열이 주어졌을 때, 각 배열의 요소가 최대 한 번 사용되고 선택한 배열 간의 절대 차이가 되도록 첫 번째 배열과 두 번째 배열의 요소를 사용하여 최대 쌍 수를 형성합니다. 쌍을 형성하는 데 사용되는 요소가 주어진 요소 K보다 작거나 같습니다. 예시 입력이 -인 경우 arr1[] ={3, 4, 5, 2, 1} arr2[] ={6, 5, 4, 7, 15} k =3이면 절대 차이가 3 -보다 작거나 같은 다음 4쌍을 형성할 수 있습니다. (1, 4), (2, 5), (3, 6), (4, 7)
문제 설명 최소 힙이 주어지면 그 안에서 최대 요소를 찾습니다. 예시 입력 힙이 -인 경우 그런 다음 최대 요소는 55입니다. 알고리즘 최소 힙에서 상위 노드는 하위 노드보다 작습니다. 따라서 잎이 아닌 노드는 최대값이 될 수 없다는 결론을 내릴 수 있습니다. 리프 노드에서 최대 요소 검색 예시 이제 예를 살펴보겠습니다 - #include <bits/stdc++.h> using namespace std; int getMaxElement(int *heap, int n) { int max