이 프로그램은 3개의 숫자를 사용하여 가장 큰 숫자를 찾습니다. 이를 위해 숫자를 서로 비교하여 가장 큰 숫자를 찾습니다. Input: a=2,b=4,c=7 Output:7 Largest Number 설명 이 프로그램은 가장 큰 수를 찾기 위해 if 문만 사용합니다. 예시 #include <iostream> using namespace std; int main() { int a,b,c; a=2,b=4,c=7; if(a>b) { &nb
정수를 십진수 시스템(base-10)에서 이진수 시스템(base-2)으로 변환합니다. 정수의 크기는 32비트로 가정하므로 숫자를 밑수로 나누어야 합니다. 컴퓨터에서 정수 값을 컴퓨터인 바이트로 변경하는 데 사용됩니다. Input:10 Output:1010 설명 10진수가 10인 경우 10을 2로 나누면 나머지는 0입니다. 따라서 0. 10을 2로 나눕니다. 새 숫자는 10/2 =5입니다. 5를 2로 나누면 나머지는 1입니다. 따라서 1입니다. 5를 2로 나눕니다. 새 숫자는 5/2 =2입니다. 2를 2
순열, nPr은 P(n,r)로 나타낼 수도 있습니다. 순열의 수를 찾는 수학 공식입니다. P(n, r)의 공식은 n입니다! / (n – r)!. n개의 요소 집합에 대한 순열의 수는 n! 어디 ! 계승을 나타냅니다. Input:n=5;r=4; Output:120 설명 P(5, 4) = 5! / (5-4)! => 120 / 1 = 120 5!=1*2*3*4*5*=120 예시 #include<iostream> using namespace std; long int fact(int x) { int
숫자 연결은 그리드에서 숫자를 연결하는 경로를 찾는 것과 관련된 논리 퍼즐 유형입니다. Numberlink 퍼즐의 간단한 예 Numberlink 퍼즐에 대한 솔루션 규칙 − 플레이어는 그리드의 일치하는 모든 숫자를 단일 연속 라인(또는 경로)과 짝을 지어야 합니다. 선은 분기되거나 서로 교차할 수 없으며 숫자는 각 선의 끝에 있어야 합니다(즉, 중간이 아님). 일부 Numberlink 디자이너는 이를 규정하지 않지만 고유한 솔루션이 있고 그리드의 모든 셀이 채워져야 문제가 잘 설계된 것으로 간주됩니다. 게임 − n × n
5)로 표시됩니다. 그리고 이 연결 목록 표현 숫자에 1을 추가하려면 목록의 최하위 비트 값을 확인해야 합니다. 9보다 작으면 정상입니다. 그렇지 않으면 코드가 다음 숫자 등으로 변경됩니다. 0) Input:1999 Output:2000 설명 다음과 같은 몇 가지 단계를 수행하는 것을 의미하는 연결 목록으로 표시된 주어진 숫자에 1을 추가하려면, 1로 변환됩니다. 이 변경된 연결 목록에 대해 이제 목록을 탐색하고 가장 왼쪽 노드에 하나를 추가합니다. 이 노드의 값이 9와 같으면 다음 노드로 캐리를 전파합니다. 캐리가 올 때까지
BST 또는 이진 검색 트리는 모든 왼쪽 노드가 루트 값보다 작고 오른쪽 노드가 모두 큰 이진 트리의 한 형태입니다. 이 문제의 경우 이진 트리를 가져와 현재 노드보다 큰 모든 값을 여기에 추가합니다. BST가 현재 노드 값보다 큰 모든 노드 값을 해당 노드 값에 추가하는 것처럼 모든 더 큰 값을 BST의 모든 노드에 추가 문제는 단순화됩니다. BST 문제 설명의 각 노드에 더 큰 값을 모두 추가합니다. BST(Binary Search Tree)가 주어지면 모든 더 큰 값 노드의 합계를 각 노드에 추가해야 합니다. 입력  
이 문제의 경우 주어진 두 배열의 요소를 추가하기 위해 추가된 값이 변경되는 기준이 되는 몇 가지 제약 조건이 있습니다. 주어진 두 배열 a[] &b[]의 합은 일부 요소를 한 자리 숫자로 제공하는 방식으로 세 번째 배열 c[]에 저장됩니다. 합계의 자릿수가 1보다 크면 세 번째 배열의 요소가 두 개의 한 자리 요소로 분할됩니다. 예를 들어 합계가 27이면 세 번째 배열에 2,7로 저장합니다. Input: a[] = {1, 2, 3, 7, 9, 6} b[] = {34, 11, 4, 7
일부 노드와 연결된 간선이 있는 그래프가 있다고 가정합니다. 각 간선에는 이진 가중치가 있습니다. 따라서 가중치는 0 또는 1이 됩니다. 소스 정점이 제공됩니다. 소스에서 다른 정점까지의 최단 경로를 찾아야 합니다. 그래프가 아래와 같다고 가정 - 일반 BFS 알고리즘에서 모든 간선 가중치는 동일합니다. 여기에서 일부는 0이고 일부는 1입니다. 각 단계에서 최적의 거리 조건을 확인합니다. 여기서 우리는 노드를 저장하기 위해 이중 종료 큐를 사용할 것입니다. 그래서 우리는 가장자리 무게를 확인할 것입니다. 0이면 앞쪽으로 밀고,
여기서 우리는 오시리스 번호를 볼 것입니다. 오시리스 수는 자신의 자릿수 하위 샘플 순열의 합과 같은 종류의 수입니다. 숫자가 132라고 가정합니다. 그런 다음 {12 + 21 + 13 + 31 + 23 + 32}를 계산하면 이것도 132입니다. 따라서 숫자는 오시리스 수입니다. 주어진 번호가 오시리스 번호인지 확인해야 합니다. 접근 방식은 간단합니다. 숫자를 분석하면 각 숫자가 두 번 발생하므로 1의 위치와 10의 위치에 있습니다. 따라서 11을 곱하여 확인할 수 있습니다. 알고리즘 isOsirisNumber(n) - Begi
크기가 4바이트인 정수 변수가 하나 있고 크기가 8바이트인 다른 포인터 변수가 있다고 가정합니다. 그러면 다음 결과는 어떻게 될까요? 예시 #include<iostream> using namespace std; main() { int a[4][5][6]; int x = 0; int* a1 = &x; int** a2 = &a1; int*** a3 = &a2; cou
아래와 같은 그래프가 하나 있다고 가정합니다. 그 그래프는 Peterson 그래프입니다. 정점은 0에서 9까지 번호가 매겨져 있습니다. 각 정점에는 몇 개의 문자가 있습니다. L 정점이 사용되는 그래프에서 W를 한 번 살펴보겠습니다. L 문자가 있는 문자열 S는 W와 S의 문자 시퀀스가 같을 때 보행시선 W에 의해 실현됩니다. 정점을 여러 번 방문할 수 있습니다. 예를 들어, 하나의 문자열 S는 ABBECCD와 같으며 걷기(0, 1, 6, 9, 7, 2, 3)로 구현됩니다. 우리의 임무는 그러한 걷기를 찾는 것이며, 그 걷
여기에서 LCS 문제에 대한 한 가지 공간 최적화 접근 방식을 볼 수 있습니다. LCS는 가장 긴 공통 부분 수열입니다. 두 문자열이 BHHUBC 및 HYUYBZC인 경우 하위 시퀀스의 길이는 4입니다. 하나의 동적 프로그래밍 접근 방식은 이미 해당되지만 동적 프로그래밍 접근 방식을 사용하면 더 많은 공간을 차지합니다. m x n 순서의 테이블이 필요합니다. 여기서 m은 첫 번째 문자열의 문자 수이고 n은 두 번째 문자열의 문자 수입니다. 여기서는 O(n)의 보조 공간을 사용하여 이 알고리즘을 구현하는 방법을 살펴보겠습니다. 각
여기서 우리는 퀵소트 기술을 볼 것이지만 우리는 3방향 퀵소트를 사용할 것입니다. 기본 퀵소트 기술은 요소를 피벗으로 찾은 다음 피벗을 중심으로 배열을 분할한 후 피벗의 왼쪽과 오른쪽에 있는 하위 배열에 대해 반복됩니다. 3방향 퀵소트도 비슷하지만 세 개의 섹션이 있습니다. 배열 arr[1 to n]은 세 부분으로 나뉩니다. arr[1에서 i까지] arr[i + 1, j] arr[j + 1, n] 알고리즘 파티션(arr, 왼쪽, 오른쪽, i, j) - begin if right – left
여기서 우리는 하나의 C 퍼즐 문제를 볼 것입니다. 두 개의 숫자 48과 96이 있다고 가정합니다. 두 번째 숫자 다음에 첫 번째 숫자를 더해야 합니다. 따라서 최종 결과는 9648과 같습니다. 그러나 논리, 산술, 문자열 관련 연산을 사용할 수 없으며 미리 정의된 함수도 사용할 수 없습니다. 어떻게 하면 될까요? 이것은 쉬워요. C에서 토큰 붙여넣기 연산자(##)를 사용하여 수행할 수 있습니다. 토큰 붙여넣기 연산자는 전처리기 연산자입니다. 두 개의 토큰을 하나의 문자열로 추가하거나 연결하기 위해 컴파일러에 명령을 보냅니다. 매
여기에서 다양한 유형의 다형성을 볼 수 있습니다. 유형은 - 임시 포함 파라메트릭 강압 Ad-Hoc 다형성을 오버로딩이라고 합니다. 이것은 같은 이름을 가진 함수가 다른 유형에 대해 다른 방식으로 작동하도록 합니다. 함수와 연산자는 모두 오버로드될 수 있습니다. 일부 언어는 연산자 오버로딩을 지원하지 않지만 함수 오버로딩은 일반적입니다. 예시 #include<iostream> using namespace std; int add(int a, int b) { return a + b; } strin
여기에서 하나의 주어진 이진 검색 트리의 모든 노드에 더 큰 값을 추가하는 흥미로운 문제가 하나 있습니다. 따라서 초기 및 최종 트리는 다음과 같습니다. - 알고리즘 bstUpdate(루트, 합계) - Begin if root is null, then stop bstUpdate(right of room, sum) sum := sum + value of root update root value using sum &nbs
C 또는 C++에서 (#) 기호로 표시된 다른 행을 찾았습니다. 이를 전처리 지시문이라고 합니다. 이 라인은 코드를 컴파일하기 전에 전처리 단계에서 처리됩니다. 여기에서는 세 가지 유형의 전처리 지시문을 볼 수 있습니다. 이들은 - 조건부 컴파일 라인 컨트롤 오류 지시문 때때로 우리는 프로그램에서 일부 매크로를 정의합니다. 조건부 컴파일 지시문 사용. 매크로가 정의되었는지 여부를 확인할 수 있습니다. 우리는 또한 그들을 통제할 수 있습니다. 따라서 하나의 매크로가 정의되어 있으면 어떤 작업을 수행하고, 그렇지 않으면 이와 같은
여기에서 n번째 항을 갖는 급수의 합을 n2 – (n-1)2로 구하는 방법을 볼 것입니다. 재귀 관계는 아래와 같습니다 - Tn =n2 − (n−1)2 따라서 시리즈는 - S 모드를 찾아야 합니다(109 + 7), 여기서 S는 주어진 급수의 모든 항의 합입니다. 예 #include<iostream> #define X 1000000007 using namespace std; long long getSum(long long n) { return ((n % X) * (n % X)) % X; }
여기서는 다중 스레드 환경을 사용하여 행렬 덧셈 및 뺄셈을 수행하는 방법을 살펴봅니다. pthread는 C 또는 C++에서 동시에 여러 스레드를 실행하는 데 사용됩니다. 행렬 A와 B가 있습니다. 각 행렬의 차수는 (m x n)입니다. 각 스레드는 각 행을 취하고 더하기 또는 빼기를 수행합니다. 따라서 m개의 행에 대해 m개의 서로 다른 스레드가 있습니다. 예시 #include#include #include #include #define CORE 3#define MAX 3 네임스페이스 사용 std;int AMat[MAX][MAX]
여기서 우리는 하나의 배열이 주어진다고 가정할 때 하나의 문제를 보게 될 것입니다. n개의 요소가 있습니다. 다른 값 S도 제공됩니다. 배열에서 요소 K를 찾아야 합니다. 따라서 K보다 큰 모든 요소가 K와 같게 되면 최종 배열의 모든 요소의 합이 S와 같아집니다. 이것이 가능하지 않은 경우, 그런 다음 -1을 반환합니다. 요소가 {12, 6, 3, 7, 8}이고 합계 값이 15이고 출력이 3이라고 가정합니다. 최종 배열은 {3, 3, 3, 3, 3}이고 배열 요소의 합계는 S =15 알고리즘 getVal(arr, n, S)