이 문제에서는 n개의 정수 배열 arr[]이 제공됩니다. 우리의 임무는 C++에서 이진 인덱스 트리를 사용하여 최대 합 증가 부분 수열을 찾는 프로그램을 만드는 것입니다. 문제 설명 − 배열의 요소를 사용하여 최대 합으로 증가하는 부분 수열을 찾아야 합니다. 하위 시퀀스 증가 - 현재 요소의 값이 이전 위치의 요소보다 큰 부분 시퀀스. 이진 색인 트리 - 트리의 일종인 자료구조이다. 효과적인 방법으로 트리에서 요소를 추가하거나 제거할 수 있습니다. 문제를 이해하기 위해 예를 들어 보겠습니다. 입력 arr[] = {5, 1,
이 문제에서는 크기가 nXm인 2차원 행렬이 제공됩니다. 우리의 임무는 n개의 배열에서 증가하는 차수의 최대 합을 찾는 프로그램을 만드는 것입니다. 프로그램 설명 − 여기서 i번째 행의 요소가 (i+1)번째 행의 요소보다 작도록 각 행에서 하나의 요소를 취하여 요소의 최대 합을 찾아야 합니다. 등등. 그러한 합계가 가능하지 않으면 결과가 불가능함을 나타내는 −1을 반환합니다. 문제를 이해하기 위해 예를 들어보겠습니다. 입력 mat[][] = { {4, 5, 1, 3, 6}, {5,
이 문제에서는 각 노드에 값이 있는 Binary Tree가 제공됩니다. 우리의 임무는 두 노드가 인접하지 않도록 Binarytree에서 노드의 최대 합을 찾는 프로그램을 만드는 것입니다. 동적 프로그래밍을 사용합니다. 문제 설명 − 노드가 직접 연결되지 않는 방식으로 합을 최대화하기 위해 이진 트리의 하위 집합을 선택합니다. 문제를 이해하기 위해 예를 들어보겠습니다. 입력 출력 24 설명 Elements to be taken under consideration are: 8 + 5 + 9 + 2 = 24 해결 방법 문제에
이 문제에서 n개의 정수와 숫자 d의 배열 arr[]이 제공됩니다. 우리의 임무는 C++에서 특정 차이를 갖는 쌍의 최대 합을 찾는 프로그램을 만드는 것입니다. . 문제 설명 − 쌍의 요소 차이가 d보다 작은 방식으로 쌍을 찾습니다. 이러한 모든 쌍의 합은 최대값이어야 합니다. 문제를 이해하기 위해 예를 들어보겠습니다. 입력 arr[] = {5, 9, 11, 7, 2, 12, 3} d = 5 출력 47 설명 Pairs that contribute to maximum sum: (3, 5), (7, 9), (11, 12). Sum
이 문제에서는 n개의 정수 값(음수 값 허용)을 포함하는 배열 arr[]이 제공됩니다. 우리의 임무는 음수가 허용되는 배열에서 쌍별 곱의 최대 합을 찾는 프로그램을 만드는 것입니다. 문제 설명 − 쌍의 요소의 곱의 합이 최대가 되도록 배열의 요소를 사용하여 쌍을 생성해야 합니다. 문제를 이해하기 위해 예를 들어보겠습니다. 입력 arr[] = {−5, 2, 3, 7, −1, 1, −3, 12} 출력 104 설명 The pairs to be considered: (−5, −3)
이 문제에서는 배열 arr[]이 제공됩니다. 우리의 임무는 배열에서 가장 작은 것과 두 번째로 작은 것의 최대 합을 찾는 프로그램을 만드는 것입니다. 문제 설명 - 배열의 합 부분배열에서 가장 작은 요소와 두 번째로 작은 요소의 합을 찾아야 합니다. 그리고 그러한 모든 하위 배열 합계의 최대값을 반환합니다. 예시 문제를 이해하기 위해 예를 들어보겠습니다. 입력 arr[] = {3, 5, 4, 2, 9, 1, 6} 출력 11 설명 Their out of all subarrays possible, {2, 9} has a maxim
이 문제에서는 크기가 n인 두 개의 배열 arr1[] 및 arr2[]가 제공됩니다. 우리의 임무는 두 배열의 곱의 최대 합을 찾는 프로그램을 만드는 것입니다. 문제 설명 − 두 배열의 곱의 최대 합을 찾아야 합니다. arr1에서 한 요소와 arr2에서 다른 요소의 곱의 최대 합을 찾아야 합니다. 문제를 이해하기 위해 예를 들어 보겠습니다. 입력 arr1[] = {3, 5, 6} arr2[] = {1, 4, 2} 출력 37 설명 Maximum sum of products: 6*4 + 5*2 + 3*1 = 24 + 10 + 3 =
이 문제에서는 nXm 크기의 행렬 mat[][]가 제공됩니다. 우리의 임무는 위에서 아래로 그리고 그 반대로 행렬에서 최대 합 경로를 찾는 프로그램을 만드는 것입니다. 문제 설명 − 좌상단에서 우하단까지의 최대 경로 합을 찾아야 합니다. 유효한 움직임 From mat[0][0] to mat[n−1][m−1]: Right (mat[i][j] to mat[i][j+1]) and Down (mat[i][j] to mat[i+1][j]). From mat[n−1][m−1] to mat[0][0]
이 문제에서는 크기가 n이고 정수 k인 배열 arr[]이 제공됩니다. 우리의 임무는 배열의
이 문제에서는 양수 값으로 구성된 n 크기의 배열 arr[]이 제공됩니다. 우리의 임무는 시작 값과 끝 값이 같은 최대 합 하위 배열을 찾는 프로그램을 만드는 것입니다. 문제 설명 − 여기에서 인덱스 i(부배열의 시작 인덱스)와 j(서브배열의 끝 인덱스)에 있는 요소가 같도록 즉, arr[i] =arr[j]를 찾아야 합니다. 그리고 하위 배열 요소의 합이 최대화됩니다. 문제를 이해하기 위해 예를 들어보겠습니다. 입력 arr[] = {2, 1, 3, 5, 6, 2, 4, 3} 출력 23 설명 All subarrays which
이 문제에서는 크기가 n이고 숫자가 k인 배열 arr[]이 제공됩니다. 우리의 임무는 최소 k개의 먼 요소를 가진 최대 합 부분 수열을 찾는 프로그램을 만드는 것입니다. 문제 설명 − 인덱스가 k 거리에 있고 합이 최대인 배열에서 부분배열의 요소를 가져오도록 부분배열의 합을 찾아야 합니다. 문제를 이해하기 위해 예를 들어보겠습니다. 입력 arr[] = {2, 3, 7, 9, 2, 8, 3} 출력 15 설명 All subsequences that satisfy the given condition, {2, 9, 3}, Sum =
이 문제에서는 양수 값으로 구성된 n 크기의 배열 arr[]이 제공됩니다. 우리의 임무는 배열의 두 개의 연속 요소가 없는 방식으로 최대 부분 수열 합을 찾는 프로그램을 만드는 것입니다. 문제 설명 − 배열의 요소를 포함하지만 배열의 인접한 두 요소를 고려할 수 없는 하위 배열의 합을 찾아야 합니다. 예 문제를 이해하기 위해 예를 들어보겠습니다. 입력 arr[] = {5, 2, 1, 9, 6} 출력 설명 - Subarray sum are : {5, 1, 6}, sum = 5 + 1 + 6 = 12 {2, 9}, sum = 2
이 문제에서 배열 arr[]와 숫자 M이 주어집니다. 우리의 임무는 C++에서 최대 가중치 차이를 계산하는 프로그램을 만드는 것입니다. 문제 설명 We will find M elements from the array such that the absolute difference between the sum and the sum of the rest elements is maximum. 문제를 이해하기 위해 예를 들어 보겠습니다. 입력 arr[] = {3, 1, 6, 9, 4} M = 3 출력 15 설명 우리는 4,6,9를 고려할
분자/분모 형식의 유리수를 나타내는 분자와 분모라는 두 개의 숫자가 있다고 가정합니다. 십진수 표현을 문자열로 찾아야 합니다. 반복되는 숫자가 있으면 대괄호로 묶습니다. 따라서 입력이 numerator =164 denominator =3과 같으면 출력은 54.(6)이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 분자가 0과 같으면 - 0 반환 배열 정의 분자 0 및 분모 <0이면 − as 끝에 - 삽입 제수 :=|분자| 배당금 :=|분모| 나머지 :=제수 모드 피제수 x :=(제수 / 피제수)를 문자열
두 개의 문자열 S와 T가 있다고 가정합니다. S를 T로 변경하는 가장 짧은 연산 시퀀스를 찾아야 합니다. 여기서 연산은 기본적으로 문자를 삭제하거나 삽입하는 것입니다. 따라서 입력이 S =xxxy T =xxyy와 같으면 출력은 [x, x, -x, y, +y]가 됩니다. 이는 장소를 의미합니다. 처음 두 개의 x를 제거한 다음 세 번째 x를 제거한 다음 y를 배치한 다음 새 y를 추가합니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 505 x 505 크기의 테이블 dp 만들기 help() 함수를 정의하면 i, j,
단어 목록이 있다고 가정합니다. 이제 두 명의 플레이어가 참여할 수 있는 유령 게임을 생각해 보십시오. 여기서 플레이어는 문자열에 문자를 번갈아 추가합니다. 그리고 만들고 있는 문자열은 목록에 있는 단어의 유효한 접두어여야 하며 목록에 있는 단어를 철자하는 플레이어는 패배합니다. 두 플레이어가 모두 최적의 플레이를 하고 있다면 첫 번째 플레이어가 이길 수 있는지 여부를 확인해야 합니다. 따라서 입력이 단어 =[manage, manager, min]과 같으면 출력은 True가 됩니다. m [플레이어 1] 엄마 [플레이어 2] 남자
각 모서리에 [u, v, w] 필드가 있고 u 및 v가 소스 및 대상 정점이고 w가 가중치인 무방향 그래프에 대한 모서리 목록이 있다고 가정합니다. 또한 [u, v, w]와 같은 형식의 쿼리 목록이 있습니다. 이는 경로의 각 모서리가 최대 w의 가중치를 갖도록 u와 v 사이에 경로가 존재하는지에 대한 질문을 나타냅니다. 따라서 참인 쿼리의 수를 찾으십시오. 따라서 입력이 edge =[[0, 1, 6],[1, 2, 7],[2, 3, 8],[0, 3, 5]] 같은 경우 쿼리 =[[0, 2, 14],[1,0,3]] 그러면 가중치가
[start, end] 형식의 간격 목록이 있다고 가정해 보겠습니다. 이 목록은 우리가 걸고자 하는 배너의 시작점과 끝점을 나타냅니다. 배너를 걸려면 하나 이상의 핀이 필요하며 하나의 핀은 배너를 두 번 이상 걸 수 있습니다. 모든 배너를 걸기 위해 필요한 가장 작은 핀 수를 찾아야 합니다. 따라서 입력이 간격 =[[2, 5],[5, 6],[8, 10],[10, 13]]과 같으면 출력은 2가 됩니다. 5와 10을 눌러 모든 배너를 걸 수 있습니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 간격의 끝 값을 기준으로 배
숫자만 있는 문자열이 있다고 가정하고 가능한 모든 유효한 IP 주소 조합을 구성하여 이를 복원해야 합니다. 유효한 IP 주소는 단일 마침표 기호로 구분된 정확히 4개의 정수(각 정수의 범위는 0~255)로 구성되어 있습니다. 따라서 입력이 ip =25525511136과 같으면 출력은 [254.25.40.123, 254.254.0.123]가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − convertToNum() 함수를 정의하면 s, 시작, 종료, num :=0 초기화 i :=시작의 경우, i <=끝일 때 업데이트
job이라는 숫자 목록과 또 다른 값 k가 있다고 가정합니다. 이제 우리는 k개의 다른 날에 모든 작업을 끝내고 싶습니다. 작업은 주어진 순서대로 수행되어야 하며 매일 하나의 작업을 완료해야 합니다. 작업 i의 난이도는 작업[i]에 저장되며 하루에 작업 목록을 완료하는 난이도는 그날 수행한 최대 난이도 작업이 됩니다. 따라서 우리는 k일 동안 작업을 수행하는 데 어려움의 최소 합을 찾아야 합니다. 따라서 입력이 작업 =[2, 3, 4, 6, 3] k =2와 같으면 출력은 8이 됩니다. 처음에는 [2]를 수행한 다음 [3, 4, 6