여기에서 우리는 연결 목록을 확인하는 괭이가 순환 연결 목록인지 여부를 볼 것입니다. 연결 목록이 순환인지 여부를 확인하기 위해 헤더 노드를 다른 변수에 저장한 다음 목록을 순회합니다. 노드의 다음 부분에서 null을 얻으면 순환이 아니고 그렇지 않으면 확인합니다. 다음 노드는 저장된 노드와 동일하거나 동일하지 않은 경우 순환입니다. 예시 #include <iostream> using namespace std; class Node{ public: int data;
n개의 요소가 있는 목록 L이 있습니다. 목록이 쌍으로 정렬되었는지 여부를 확인해야 합니다. 목록이 {8, 10, 18, 20, 5, 15}와 같다고 가정합니다. 이것은 (8, 10), (18, 20), (5, 15)가 정렬되어 쌍으로 정렬됩니다. 목록에 홀수개의 요소가 있는 경우 마지막 요소는 무시됩니다. 접근 방식은 너무 간단합니다. 숫자를 왼쪽에서 오른쪽으로 이동합니다. 두 개의 연속된 요소를 취해 정렬 여부를 확인하고, 한 쌍이 정렬되지 않으면 false를 반환하고, 정렬되지 않은 쌍이 없으면 true를 반환합니다. 예시
여기서 숫자가 비정상적인 숫자인지 여부를 알 수 있습니다. 숫자의 가장 큰 소인수가 숫자의 제곱근보다 엄밀히 말하면 숫자가 비정상적이라고 합니다. 특이한 숫자는 2, 3, 5, 6, 7, 10, 11, 13, 14, 15, 17, 19, 20, 21, 22, 23, 26, 28, 29, 31, 33, 34입니다. , 35, 37, 38, 39, 41, 42, 43, 44, 46 이를 해결하기 위해 가장 큰 소인수를 찾은 다음 해당 인수가 숫자의 제곱근보다 큰지 여부를 확인합니다. 그렇다면 숫자는 비정상적인 숫자이고 그렇지 않은 숫
여기서 숫자가 Bleak인지 여부를 확인합니다. 양수 x의 합과 x에 설정된 비트 수의 합으로 나타낼 수 없는 숫자를 bleak이라고 합니다. 따라서 x + set_bit_count(x)는 음수가 아닌 숫자 x에 대해 n과 같지 않습니다. 개념은 매우 간단합니다. 설정된 비트 수 + 숫자가 숫자와 같지 않으면 그것이 Bleak이고 그렇지 않으면 그렇지 않습니다. 예시 #include <iostream> using namespace std; int set_bit_count(int x) { unsig
두 개의 숫자가 있다고 가정합니다. 어떤 숫자가 모든 소인수로 나누어 떨어지는지 아니면 두 번째 숫자로 나누어 떨어지는지 확인해야 합니다. 숫자가 120이라고 가정합니다. 소인수는 {2, 3, 5}이고 다른 수는 75이며 여기에서 소인수는 {3, 5}입니다. 120도 3과 5로 나눌 수 있으므로 결정은 yes입니다. 1이면 GCD에는 x도 나누는 소수 제수가 포함됩니다(x는 첫 번째 숫자로). 두 번째 숫자 y / GCD에 고유한 소수가 있는 경우 모든 고유한 소수가 있는 경우. 재귀를 사용하여 쌍(x, y/GCD)에 대한 고유성
우리는 N x M 차수의 행렬이 하나 있고 제품 K가 있습니다. 작업은 주어진 제품과의 쌍이 행렬에 존재하는지 여부를 확인하는 것입니다. 행렬이 아래와 같다고 가정 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 이제 K가 42이면 (6, 7)과 같은 쌍이 있습니다. 이 문제를 해결하기 위해 해싱을 사용합니다. 행렬의 모든 요소를 가져와서 해시 테이블을 생성합니다. 우리는 행렬 순회를 시작할 것이고, 순회하는 동안 행렬의 현재 요소가 주어진 곱으로 나눌 수 있는지 확인하고 곱 K를 현
요소 집합이 있습니다. 그리고 제품 K. 연결 리스트에 두 개의 숫자가 있는지 확인하고, 그 곱은 K와 같습니다. 두 개의 숫자가 있으면 인쇄하고, 두 개 이상 있으면 아무 것도 인쇄하십시오. . 연결 목록이 {2, 4, 8, 12, 15}이고 k 값이 16이라고 가정합니다. 그러면 (2, 8)을 반환합니다. 우리는 해싱 기술을 사용하여 이것을 해결할 것입니다. 해시 테이블 하나를 가져와 모든 요소를 0으로 표시합니다. 이제 해시 테이블에서 모든 요소를 1로 표시합니다(연결 목록에 있는 경우). 이제 연결 목록을 탐색하기
설명 Aplha-Beta 가지치기는 minimax 알고리즘에서 사용되는 최적화 기법입니다. 이 알고리즘의 아이디어는 더 나은 움직임이 이미 존재하므로 평가할 필요가 없는 게임 트리의 가지를 잘라냅니다. 이 알고리즘은 두 개의 새로운 필드를 소개합니다 - Alpha - 최대화 플레이어가 현재 수준 또는 그 이상 수준에서 보장할 수 있는 최상의 값(최대값)입니다. 베타 - 현재 수준 또는 그 이상 수준에서 최소화 플레이어가 보장할 수 있는 최상의 값(최소값)입니다. 예시 게임 트리가 -인 경우 arr [] = {13, 8, 2
문제 설명 n개의 요소로 구성된 배열이 제공됩니다. 작업은 n/2 쌍의 제곱합이 최소가 되도록 n/2 쌍을 만드는 것입니다. 예시 주어진 배열이 -인 경우 arr[] = {5, 10, 7, 4} then minimum sum of squares is 340 if we create pairs as (4, 10) and ( 5, 7) 알고리즘 1. Sort the array 2. Take two variables which point to start and end index of an array 3. Calulate sum as f
문제 설명 주어진 N개의 학생 수와 학생들이 얻은 점수를 나타내는 배열. 학교는 테디에게 테디를 대가로 주기로 결정했습니다. 그러나 학교에서는 비용을 절감하고자 하므로 다음과 같은 제약 조건을 부과하여 배포할 테디의 총 수를 최소화합니다. - 모든 학생은 적어도 하나의 테디를 받아야 합니다. 두 명의 학생이 나란히 앉았다면 더 높은 점수를 받은 학생이 더 많은 점수를 받아야 합니다. 두 명의 학생이 같은 점수를 받은 경우 다른 수의 테디를 받을 수 있습니다. 예 3명의 학생이 있고 획득한 점수가 −로 배열로 표시된다고 가정해
설명 크기가 N인 배열이 주어지면 X와 배열의 각 요소에 대해 XOR 연산을 수행할 때 배열 요소의 합이 최소가 되도록 요소 X를 찾습니다. If input array is: arr [] = {8, 5, 7, 6, 9} then minimum sum will be 30 Binary representation of array elments are: 8 : 1000 5 : 0101 7 : 0111 6 : 0101 9 : 1001 If X = 5 then after performing XOR sum will be 30: 8 ^ 5 =
문제 설명 N 대회 참가자는 M으로 분할되었습니다. 각 팀에는 최소한 한 명의 참가자가 있도록 어떤 방식으로 팀을 구성해야 합니다. 대회가 끝난 후 같은 팀의 각 참가자 쌍은 친구가 되었습니다. 당신의 임무는 대회가 끝날 때까지 형성될 수 있는 친구 쌍의 최소 및 최대 수를 찾는 프로그램을 작성하는 것입니다. 알고리즘 1. We can obtain max pairs using below formula: maxPairs = ((n – m) * (n – m + 1)) / 2 2. We can obtain min
상각 분석 작업 시퀀스의 경우 실행 시간, 즉 시퀀스에 필요한 평균 시간을 결정하는 데 사용됩니다. In은 항상 평균 사례 시나리오를 취하지 않기 때문에 알고리즘에서 수행된 평균 사례 분석으로 취급될 수 없습니다. 분석의 최악의 시나리오로 발생하는 경우가 있습니다. 따라서 상각 분석은 시퀀스의 여러 작업에 대한 최악의 경우 분석으로 처리될 수 있습니다. 여기에서 각 작업을 수행하는 비용은 서로 다르고 일부는 높습니다. 이 문제는 바이너리 카운터를 사용하는 일반적인 보기입니다. 개념을 명확하게 하기 위해 C++ 프로그래밍 언어에서
삽입 정렬의 시간 복잡도는 얼마입니까? 시간 복잡도 코드 또는 알고리즘 세트가 입력량의 함수로 처리하거나 실행하는 데 걸리는 시간입니다. 삽입 정렬의 경우 시간 복잡도는 O(n), 즉 최상의 시나리오에서 n의 큰 O입니다. 평균 또는 최악의 시나리오에서 복잡성은 O(n2 ). 6, 5, 8, 7, 10, 9 … 위의 배열을 정렬하는 형식의 시간 복잡도는 O(n)입니다. 이 알고리즘을 주의 깊게 살펴보겠습니다. 여기에서 모든 쌍은 원래 위치에서 교체됩니다. 즉, 요소 1과 요소 2의 위치가 서로 바뀌고 3과 4가 교환되는 식
연결 목록은 데이터 요소를 연결 형식으로 저장하는 데이터 구조입니다. 연결 목록의 각 노드에는 데이터 요소와 링크가 있습니다. 연결 목록의 역순 인쇄는 문제 해결에서 해결해야 하는 일반적인 문제입니다. 그래서, 여기서 우리는 C++ 프로그래밍 언어로 연결 리스트의 역순을 출력하는 흥미로운 방법을 배울 것입니다. 일반적으로 역방향 연결 목록을 인쇄하려면 목록을 수정하거나 목록을 여러 번 탐색해야 하지만 이 방법은 그런 것이 필요하지 않으며 연결 목록을 한 번만 탐색합니다. 이 방법의 논리는 캐리지 리턴을 사용하여 문자열을 역으로
시간 복잡도 알고리즘이 평균 케이스를 실행하는 데 필요한 시간으로 정의할 수 있습니다. 몇 가지 기본 함수의 시간 복잡도를 보고 계산해 보겠습니다. 방법 void counter(int n){ for(int i = 0 ; i < n ; i++){ for(int j = 1 ; j<n ; j += i ){ cout<<i<<” ”<<j; &n
배열 동일한 데이터 유형의 요소를 저장하는 선형 데이터 구조입니다. 배열의 단일 데이터 요소에 액세스하려면 일반적으로 사용되는 표준 방법이 있습니다. 구문 array_name[index]; 예시 #include <iostream> using namespace std; int main( ){ int arr[2] = {32,65}; printf("First Element = %d\n",arr[0]); printf("Second E
지역 도형의 2차원 평면에서 도형의 범위입니다. 사각형 모든 변이 같고 모든 내각이 직각인 사각형입니다. 대각선 다각형의 서로 인접하지 않은 두 변을 연결하는 선입니다. ac 및 bd는 abcd 정사각형의 대각선입니다. 이 문제에서는 정사각형의 대각선 길이가 주어지고 정사각형의 길이를 찾아야 합니다. 이제 삼각형 ABC에서 ac2 = bc2 + ab2 d2 = a2 + a2 d = sqrt(2*a2) d2 /2 = a2 그리고 우리는 제곱 =*임을 압니다. 따라서 면적 =d2 /2 이 공식을 사용하여 대각선의
도형의 넓이는 2차원 평면에서 도형의 넓이입니다. 삼각형 는 3면이 있는 다각형입니다. 평행사변형 마주보는 변이 같고 평행한 사변형입니다. 이 프로그램에서 밑변과 높이가 있는 평행사변형이 있고 평행사변형과 밑변이 같은 삼각형을 내접합니다. 주어진 밑변과 높이를 사용하여 삼각형의 면적을 계산해야 합니다. 구성된 삼각형의 면적은 평행사변형의 밑변과 평행사변형이 공식으로 주어지는 공통 높이를 취합니다. =0.5 * 밑변 * 높이 area = ½ * b * h 예 #include<iostream> #
산술 수는 모든 양수 제수의 평균이 정수인 숫자입니다. 즉, 숫자 n의 경우 제수의 수가 제수의 합을 나눌 수 있는 경우 n은 산술 숫자입니다. 개념을 더 잘 이해할 수 있도록 예를 들어 보겠습니다. Input : n = 6 Output : YES Explanation : Divisors are 1 , 2 , 3 , 6 Sum = 1+2+3+6 = 12 Number of divisors = 4 Sum of divisors / number of divisor = 12 / 4 = 3 알고리즘 Step 1 : Calculate the