키보드를 사용하여 문자 A를 작성해 보겠습니다. 우리의 목표는 4개의 키만 사용하고 텍스트 필드에 최대 A를 쓰는 것입니다. 키는 A, C, V 및 Ctrl입니다. A의 최대 개수를 쓰려면 Ctrl + A를 사용하여 모두를 선택하고 Ctrl + C를 사용하여 복사하고 Ctrl + V를 사용하여 붙여넣습니다. 입력 및 출력 Input: Number of keystrokes, say 7 Output: Maximum Number of A's with 7 keystrokes is: 9 Press A three times. Then
독립 집합은 해당 하위 집합의 두 노드 사이에 가장자리가 없을 때 모든 이진 트리 노드의 하위 집합입니다. 이제 요소 집합에서 가장 긴 독립 집합을 찾습니다. 즉, 요소가 이진 트리를 형성하는 데 사용되는 경우 해당 하위 집합의 요소가 서로 연결되지 않는 모든 가장 큰 하위 집합입니다. 입력 및 출력 Input: A binary tree. Output: Size of the Largest Independent Set is: 5 알고리즘 longSetSize(root) 이 알고리즘에서는 이진 트리가 형성되며 해당 트리의 각 노
정수 배열이 제공됩니다. 출력으로 보낼 연속된 모든 요소의 합이 가장 큰 합을 찾아야 합니다. 동적 프로그래밍을 사용하여 현재 기간까지의 최대 합계를 저장합니다. 배열에서 연속 요소의 합계를 찾는 데 도움이 됩니다. 입력 및 출력 Input: An array of integers. {-2, -3, 4, -1, -2, 1, 5, -3} Output: Maximum Sum of the Subarray is: 7 알고리즘 maxSum(array, n) 입력 - 기본 배열, 배열의 크기입니다. 출력 - 최대 합계. Begin &nbs
가장 긴 공통 하위 시퀀스는 지정된 시퀀스 또는 배열 모두에 존재하는 하위 시퀀스 유형입니다. 이 문제를 해결하기 위해 계속해서 계산되는 많은 하위 문제가 있음을 알 수 있습니다. 동적 프로그래밍의 중첩 하위 구조 속성을 사용하여 계산 노력을 극복할 수 있습니다. 하위 문제의 결과가 계산되어 테이블에 저장되면 이전 결과를 사용하여 다음 결과를 간단히 계산할 수 있습니다. 입력 및 출력 Input: Two strings with different letters or symbols. string 1: AGGTAB string 2: GX
시퀀스가 처음에는 증가했다가 감소하는 경우 바이토닉(bitonic)이라고 합니다. 이 문제에서는 모든 양의 정수로 구성된 배열이 제공됩니다. 먼저 증가하고 다음 감소하는 부분 수열을 찾아야 합니다. 이 문제를 해결하기 위해 우리는 가장 긴 증가 부분 수열과 가장 긴 감소 부분 수열이라는 두 개의 부분 수열을 정의할 것입니다. LIS 배열은 array[i]로 끝나는 증가하는 부분 시퀀스의 길이를 유지합니다. LDS 배열은 배열[i]에서 시작하여 감소하는 부분 시퀀스의 길이를 저장합니다. 이 두 배열을 사용하여 가장 긴 bitonic
다른 문자의 행렬이 제공됩니다. 한 문자에서 시작하여 현재 문자보다 큰 모든 문자를 순회하여 가장 긴 경로를 찾아야 합니다. 문자는 서로 연속적입니다. 가장 긴 경로를 찾기 위해 우리는 깊이 우선 탐색 알고리즘을 사용할 것입니다. DFS 동안 일부 하위 문제가 여러 번 발생할 수 있습니다. 그 계산을 피하기 위해 우리는 동적 프로그래밍 방식을 계속해서 사용할 것입니다. 입력 및 출력 Input: The matrix as shown above. And the starting point. Here the starting point
최장 증가 부분 수열은 한 항목이 이전 항목보다 큰 부분 수열입니다. 여기서 우리는 정수 집합에서 가장 긴 증가 부분 시퀀스 길이를 찾으려고 노력할 것입니다. 입력 및 출력 Input: A set of integers. {0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15} Output: The length of longest increasing subsequence. Here it is 6. The subsequence is 0, 2, 6, 9, 13, 15. 알고리즘 longestSub
주어진 문자열에서 가장 긴 회문인 부분 문자열을 찾아야 합니다. 가장 긴 회문 하위 문자열을 얻으려면 많은 하위 문제를 해결해야 하며 일부 하위 문제는 겹칩니다. 그들은 여러 번 해결해야합니다. 그런 이유로 동적 프로그래밍이 도움이 됩니다. 테이블을 사용하여 이전 하위 문제의 결과를 저장할 수 있으며 단순히 추가 결과를 생성하는 데 사용할 수 있습니다. 입력 및 출력 Input: A String. Say “thisispalapsiti” Output: The palindrome substring and the
각 셀에 포인트가 있는 행렬이 있으며, 두 번의 탐색을 사용하여 해당 그리드에서 최대 포인트를 얻는 방법입니다. 충족해야 할 몇 가지 조건이 있습니다 - 첫 번째 순회는 그리드의 왼쪽 상단 셀에서 시작하여 왼쪽 하단 모서리로 이동해야 합니다. 그리고 두 번째 순회에서 오른쪽 상단 모서리에서 시작하여 오른쪽 하단 모서리로 한 셀에서 맨 아래, 현재 셀의 왼쪽 아래, 현재 셀의 오른쪽 아래로만 이동할 수 있습니다. 한 순회가 이미 셀에서 일부 포인트를 얻은 경우 다음 순회에서는 해당 셀에서 포인트를 얻지 못합니다. 입력 및 출력
이 문제에서는 1에서 n 사이의 모든 숫자의 자릿수의 합을 찾아야 합니다. 예를 들어 54의 자릿수의 합은 5 + 4 =9입니다. 이와 같이 모든 숫자와 자릿수의 합을 찾아야 합니다. 10d - 1이 있다는 것을 알고 있습니다. 자릿수가 d인 숫자를 생성할 수 있습니다. 모든 숫자 d의 합을 찾기 위해 재귀 공식을 사용할 수 있습니다. 합계(10d - 1)=sum(10d-1 - 1)*10+45*(10d-1 ) 입력 및 출력 Input: This algorithm takes the upper limit of the range, sa
이 문제에서는 연속 1이 없는 이진수를 찾아야 합니다. 3비트 이진 문자열에는 연속 1이 있는 3개의 이진수 011, 110, 111이 있고 연속 1이 없는 5개의 숫자가 있습니다. 따라서 이 알고리즘을 3비트 숫자에 적용하면 답은 5가 됩니다. a[i]는 비트 수가 I이고 연속적인 1을 포함하지 않는 이진수 집합이고 b[i]는 비트 수가 I이고 연속적인 1을 포함하는 이진수 집합입니다. , 다음과 같은 반복 관계가 있습니다. a[i] := a[i - 1] + b[i - 1] b[i] := a[i - 1] 입력 및 출력 Inpu
플레이어가 각 동작에서 3, 5 또는 10으로 점수를 얻을 수 있는 게임을 생각해 보겠습니다. 목표 점수도 부여됩니다. 우리의 임무는 이 3점으로 목표 점수에 도달할 수 있는 가능한 방법이 얼마나 많은지 찾는 것입니다. 동적 프로그래밍 방식을 사용하여 0에서 n까지의 모든 점수 목록을 만들고 3, 5, 10의 각 값에 대해 단순히 테이블을 업데이트합니다. 입력 및 출력 Input: The maximum score to reach using 3, 5 and 10. Let the input is 50. Output: Number of
여기에는 n개의 섹션이 나와 있으며, 각 섹션에는 건물을 건설하는 도로의 양면이 있습니다. 두 집 사이에 하나의 빈 공간이 필요하다면 플롯에서 건물을 지을 수 있는 방법은 몇 가지나 될까요? 건물을 건설할 수 있는 네 가지 가능성이 있습니다. 도로 한쪽 길 건너편 건물을 지을 수 없습니다. 양쪽 도로 입력 및 출력 Input: It takes the number of sections to construct buildings. Say the input is 3. Output: Enter Number of sections:
n개의 계단이 있습니다. 한 사람은 1층에서 n층으로 갈 것입니다. 한 걸음에 얼마나 많은 계단을 넘을 수 있는지도 나와 있습니다. 이 정보를 가지고 n번 계단으로 갈 수 있는 방법을 찾아야 합니다. 각 단계에서 최대 두 개의 계단을 건널 수 있다고 가정해 보겠습니다. 따라서 이 문제를 해결하기 위해 재귀 관계를 찾을 수 있습니다. (n-1)계단이나 (n-2)계단에서 n계단으로 이동할 수 있습니다. 그래서 way(n) =way(n-1) + way(n-2). 입력 및 출력 입력:계단 수, 예를 들어 10개 한 단계에 점프할 수 있는
이것은 유명한 퍼즐 문제입니다. n층짜리 건물이 있고 m개의 계란이 있다고 가정하고 계란을 깨뜨리지 않고 떨어뜨리는 것이 안전한 바닥을 찾는 데 필요한 최소 방울 수를 어떻게 찾을 수 있습니까? 기억해야 할 몇 가지 중요한 사항이 있습니다 - 알이 특정 층에서 깨지지 않으면 더 낮은 층에서도 깨지지 않습니다. 알이 특정 층에서 깨지면 모든 위층에서 깨집니다. 계란이 깨지면 버려야 하며, 그렇지 않으면 다시 사용할 수 있습니다. 입력 및 출력 Input: The number of eggs and the maximum floor.
두 개의 문자열이 제공됩니다. 첫 번째 문자열은 소스 문자열이고 두 번째 문자열은 대상 문자열입니다. 이 프로그램에서 우리는 첫 번째 문자열을 두 번째 문자열로 변환하는 데 얼마나 많은 편집이 필요한지 찾아야 합니다. 문자열 편집은 일부 요소 삽입, 첫 번째 문자열에서 삭제 또는 두 번째 문자열로 변환할 항목 수정 중 하나일 수 있습니다. 입력 및 출력 Input: Two strings to compare. string 1: Programming string 2: Programs Output: Enter the initial s
숫자 n과 값이 있습니다. 우리는 모든 n자리 숫자를 찾아야 합니다. 여기서 모든 n자리 s의 합은 주어진 값과 같습니다. 여기서 0은 숫자로 계산되지 않습니다. 숫자 n은 1에서 100 사이여야 하고 값은 1에서 500 사이여야 합니다. 입력 및 출력 Input: This algorithm takes number of digits, and the sum value. Let the digit count is 3. and sum is 15. Output: Display the number of different 3-digit num
이 문제의 경우 여정에 N개의 정류장이 있습니다. 차량은 정류장 0에서 N-1까지 여행을 시작합니다. 표에는 모든 역 쌍의 티켓 비용이 나와 있습니다. 주어진 비용으로 목적지에 도달하기 위한 최소 비용을 찾아야 합니다. 입력 및 출력 Input: The cost matrix of the journey. 0 15 80 90 ∞ 0 40 50 ∞ ∞ 0 70 ∞ ∞ ∞ 0 Output: The minimum
각 정점 쌍 사이의 가중치와 함께 하나의 유향 그래프가 제공되며 두 개의 정점 u 및 v도 제공됩니다. 우리의 임무는 꼭짓점 u에서 꼭짓점 v까지의 최단 거리와 정확히 k개의 모서리 수를 찾는 것입니다. 이 문제를 해결하기 위해 정점 u에서 시작하여 모든 인접 정점으로 이동하고 k 값을 k - 1로 사용하여 인접 정점에 대해 반복합니다. 입력 및 출력 Input: The cost matrix of the graph. 0 10 3 2 ∞ 0 ∞ 7 ∞ ∞ 0 6
방향 그래프에서 한 구성요소의 각 꼭짓점 쌍 사이에 경로가 있는 경우 강력하게 연결되었다고 합니다. 이 알고리즘을 해결하기 위해 먼저 DFS 알고리즘을 사용하여 각 정점의 종료 시간을 구하고 이제 전치된 그래프의 종료 시간을 찾은 다음 정점을 토폴로지 정렬에 따라 내림차순으로 정렬합니다. 입력 및 출력 Input: Adjacency matrix of the graph. 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 Output: Following are strongly connect