Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++
  • C 프로그래밍
  •   
  • C++
  •   
  • Redis
  •   
  • BASH 프로그래밍
  •   
  • Python
  •   
  • Java
  •   
  • 데이터 베이스
  •   
  • HTML
  •   
  • JavaScript
  •   
  • 프로그램 작성
  •   
  • CSS
  •   
  • Ruby
  •   
  • SQL
  •   
  • IOS
  •   
  • Android
  •   
  • MongoDB
  •   
  • MySQL
  •   
  • C#
  •   
  • PHP
  •   
  • SQL Server
  • C++

    1. C++에서 gcd(p[i], i)> 1인 인덱스 수가 정확히 K인 순열 찾기

      1인 인덱스의 수(1 – 기본 인덱싱)가 되도록 [1에서 N] 범위의 정수 순열을 찾아야 합니다. 정확히 K입니다. 따라서 N =4이고 K =3이면 출력은 [1, 2, 3, 4]가 됩니다. gcd(1, 1) =1, gcd(2, 2) =2, gcd(3, 3) =3, gcd(4, 4) =4 1인 인덱스의 수는 N – 1이 됩니다. 1을 제외한 두 개의 연속 요소를 바꾸면 해당 인덱스의 수는 정확히 2로 줄어들고 1로 바꾸면 카운트가 줄어듭니다. 정확히 1. 예시 #include<iostream> using namespace

    2. n이 되도록 x의 최대값을 구하세요! C++에서 %(k^x) =0

      두 개의 정수 n과 k가 있다고 가정합니다. n!이 되도록 x의 최대값을 찾아야 합니다. mod (k^x) =0. 따라서 n =5이고 k =2일 때 출력은 3이 됩니다. As n! =120, 이제 x의 다른 값에 대해 - 120 mod 2^0 =0, 120 mod 2^1 =0, 120 mod 2^2 =0, 120 mod 2^3 =0, 120 mod 2^4 =8, 120 mod 2^5 =24, 120 mod 2^6 =56, 120 mod 2^7 =120. x =3의 최대값이므로 결과는 0이므로 출력은 3입니다. 이 문제를 해결하려

    3. C++에서 시침과 분침 사이의 각도에 세타가 주어지는 시간 찾기

      하나의 세타 또는 각도 값이 있다고 가정합니다. 시침과 분침으로 각도를 생성하는 hh:mm 형식의 시간을 찾아야 합니다. 각도가 90°라고 가정하면 결과는 3:00이 될 수 있습니다. 12시간이 있는 것처럼 시간에는 12가지 가능성이 있고 분에는 60가지 가능성이 있습니다. 우리는 가능한 모든 시간을 반복할 것입니다. 임의의 시간에 대한 각도가 주어진 ta와 같으면 그 시간을 인쇄하십시오. 예시 #include<iostream> #include<cmath> using namespace std; float an

    4. C++의 이진 트리에서 최대 수직 합 찾기

      이진 트리가 있다고 가정합니다. 작업은 수직 순서 순회에서 모든 노드 합계의 최대값을 인쇄하는 것입니다. 트리가 아래와 같다면 - 수직 순서 순회는 −와 같습니다. 4 2 1 + 5 + 6 = 12 3 + 8 = 11 7 9 여기서 최대값은 12입니다. 접근 방식은 간단합니다. 수직 순서 순회를 수행한 다음 합계를 찾고 최대값을 확인합니다. 예시 #include<iostream> #include<map> #include<vector> #include<queue> using names

    5. C++에서 정렬된 순서로 1 <=n <=k인 경우 n비트가 설정된 k비트 숫자의 모든 조합 찾기

      숫자 k가 있다고 가정합니다. 1 <=n <=k인 n 세트 비트가 있는 k 비트 수의 가능한 모든 조합을 찾습니다. 결과적으로 우리는 모든 비트가 설정된 숫자까지 1비트가 먼저 설정된 모든 숫자를 인쇄한 다음 2비트가 설정된 숫자를 인쇄합니다. 두 숫자의 설정 비트 수가 같으면 작은 숫자가 먼저 옵니다. 따라서 k =3이면 숫자는 [001, 010, 100, 011, 101, 110, 111]이 됩니다. 여기에서 1 <=n <=k인 n 세트 비트가 있는 k 비트 숫자의 가능한 모든 조합을 찾기 위해 동적 프로그래밍 접근 방식을 사

    6. C++에서 주어진 좌표 세트로 직사각형의 최소 영역 찾기

      XY 평면에 몇 가지 점의 배열이 있다고 가정합니다. 이 점들로부터 형성할 수 있는 직사각형의 최소 면적을 찾아야 합니다. 직사각형의 측면은 X 및 Y 축과 평행해야 합니다. 직사각형을 형성할 수 없으면 0을 반환합니다. 따라서 점 배열이 [(1, 1), (1, 3), (3, 1), (3, 3), (2, 2)]와 같은 경우 . 출력은 4가 됩니다. 점 (1, 1), (1, 3), (3, 1) 및 (3, 3)을 사용하여 직사각형을 형성할 수 있기 때문입니다. 이를 해결하려면 x 좌표로 점을 주어 직선 수직선상의 점이 함께 그룹화되도

    7. C++로 된 모든 책을 구입하기 위한 최소 비용 찾기

      n개의 요소로 구성된 배열이 있다고 가정합니다. 이들의 평점입니다. 다음 조건에서 모든 책을 구입하는 데 필요한 최소 비용을 찾으십시오. - 각 책의 가격은 최소 1달러입니다. 평가가 인접 도서보다 높으면 도서의 비용이 인접 도서(왼쪽 또는 오른쪽)보다 높습니다. 예를 들어, 등급 배열이 [1, 3, 4, 3, 7, 1]과 같으면 출력은 10, As 1 + 2 + 3 + 1 + 2 + 1 =10 이 문제를 해결하려면 LtoR 및 RtoL이라는 두 개의 배열을 만들고 1로 채워야 합니다. 이제 다음 단계를 따르세요. - 왼쪽

    8. C++에서 적어도 두 개의 더 큰 요소가 있는 배열의 모든 요소 찾기

      n개의 숫자로 구성된 배열이 있다고 가정합니다. 배열에서 적어도 두 개의 더 큰 요소가 있는 모든 요소를 ​​찾아야 합니다. 배열이 A =[2, 8, 7, 1, 5]와 같으면 결과는 [2, 1, 5]가 됩니다. 이를 해결하기 위해 두 번째 최대 요소를 찾은 다음 두 번째 최대 값보다 작거나 같은 모든 요소를 ​​인쇄합니다. 예시 #include<iostream> using namespace std; void searchElements(int arr[], int n) {    int first_max =

    9. C++에서 가장 긴 공통 접두사에 대한 최소 이동 찾기

      두 개의 문자열 A와 B가 있다고 가정합니다. A와 B의 길이는 동일합니다. 단일 시프트에서 문자열 B를 한 요소로 회전할 수 있습니다. A와 B에서 최대 길이의 공통 접두사를 얻으려면 최소 요구 시프트를 찾아야 합니다. 따라서 A =computerprogramming이고 B =programminglanguage인 경우 최소 시프트는 8이고 접두사는 프로그래밍입니다. B의 끝에 문자열 B를 추가하여 B =B + B라고 가정하면 각 시프트의 접두어를 별도로 찾을 필요가 없습니다. 따라서 우리는 B에 있는 A의 가장 긴 접두사를 찾아

    10. C++에서 1에서 N까지 거의 소수의 수 찾기

      숫자 N이 있다고 가정합니다. 1에서 N까지의 범위에서 거의 소수를 찾아야 합니다. 숫자는 정확히 두 개의 서로 다른 인수를 가질 때 거의 소수라고 합니다. 숫자는 비소인수에 제한이 없지만 2개의 소인수여야 합니다. 따라서 N이 2이면 출력은 2가 됩니다. 두 개의 숫자 6과 10이 있습니다. 여기서 우리는 에라토스테네스의 체 접근법을 사용할 것입니다. 더 나은 아이디어를 얻으려면 다음 구현을 확인하십시오. 예시 #include<iostream> #define N 100005 using namespace std; boo

    11. C++에서 세 개의 연속 요소 중 하나가 선택되도록 최소 합계 찾기

      n개의 요소로 구성된 배열이 있다고 가정합니다. 작업은 배열에서 요소의 최소 합을 찾는 것입니다. 적어도 하나의 요소가 해당 배열의 모든 연속 3개 요소에서 하나의 요소가 선택되도록 합니다. 따라서 배열이 [1, 2, 3, 6, 7, 1]과 같은 경우. 출력은 4입니다. 따라서 3과 1을 선택하면 (3 + 1 =4)입니다. 따라서 [1, 2, 3], [2, 3, 6], [3, 6, 7], [6, 7, 1]과 같은 연속적인 요소의 하위 배열이 있습니다. 모든 하위 배열에서 하나의 요소를 선택했습니다. sum(i)이 가능한 최소 합

    12. 요소가 C++의 범위로 제한되지 않는 경우 지정된 배열에서 중복 찾기

      N개의 정수 배열이 있다고 가정합니다. 여기서 우리는 주어진 배열의 복제본을 인쇄할 것입니다. 그러한 중복이 없으면 -1을 반환합니다. 따라서 배열이 [12, 15, 12, 3, 6, 12, 3, 48, 56, 8, 48]과 같으면 중복 항목은 [12, 3, 48] 여기서는 C++에서 순서가 지정되지 않은 맵을 사용합니다. 따라서 처음에 하나의 요소를 가져올 때 해당 요소가 지도에 있는지 여부를 확인하고, 존재하는 경우 해당 요소를 중복으로 인쇄하고, 그렇지 않으면 맵에 추가하면 됩니다. 예시 #include<iostream

    13. C++에서 배열 곱이 더 커지도록 모든 배열 요소를 할당하는 최소값 찾기

      n개의 요소로 구성된 배열이 있다고 가정합니다. arr[i] =x가 되도록 주어진 배열의 모든 요소를 ​​최소값 x로 업데이트합니다. 새 배열의 모든 요소의 곱은 초기 배열의 모든 요소의 곱보다 엄격하게 큽니다. 여기서 i <=arr[i] <=10^10 및 1 <=n 4 * 2 * 1 * 10 * 6 n개 요소의 곱이 P라는 것을 알고 있기 때문에 P의 n번째 루트를 찾아야 하고 곱의 n번째 루트를 찾으려면 배열의 n개 요소의 로그의 합에서 n을 나눈 다음 안티로그의 상한선 결과가 될 것입니다. res =ceil(안티로그(lo

    14. C++의 O(1) 공간에서 요소 0에서 N-1까지의 상수 배열에서 중복 찾기

      0에서 n-1까지의 숫자 목록이 있다고 가정합니다. 숫자는 가능한 한 많이 반복될 수 있습니다. 추가 공간을 차지하지 않고 반복되는 숫자를 찾아야 합니다. n =7의 값이고 목록이 [5, 2, 3, 5, 1, 6, 2, 3, 4, 5]와 같은 경우. 답은 5, 2, 3입니다. 이 문제를 해결하려면 다음 단계를 따라야 합니다. 목록의 각 요소 e에 대해 다음 단계를 수행하십시오. - sign :=A[e의 절대값] 부호가 양수이면 음수로 만듭니다. 그렇지 않으면 반복입니다. 예시 #include<iostream>

    15. C++에서 셔플된 복사본인 다른 배열에서 누락된 숫자 찾기

      두 개의 배열 A와 B가 있고 배열 A에 n개의 요소가 있다고 가정합니다. 두 번째 배열 B에는 A의 모든 요소가 있지만 섞이고 하나의 요소가 제거됩니다. 누락된 요소를 찾아야 합니다. 따라서 A =[4, 8, 1, 3, 7]이고 B =[7, 4, 3, 1]이면 출력은 8입니다. 이것은 XOR 트릭을 사용하여 해결할 수 있습니다. 각 요소의 결합된 발생은 A에서 한 번, A에서 한 번만 발생하는 한 요소를 제외하고 B에서 두 번 발생합니다. x XOR x =0이라는 것을 알고 있으므로 두 요소 모두에서 XOR을 수행하면 배열. 결

    16. 두 요소의 차이가 있는 m 요소 집합 찾기는 C++에서 k로 나눌 수 있습니다.

      N개의 양의 정수가 있는 배열과 또 다른 변수 K가 있다고 가정합니다. 두 요소 간의 차이가 k와 같도록 정확히 m개의 요소를 찾아야 합니다. 따라서 배열이 A =[4, 7, 10, 6, 9]이고 k =3이고 m =3이면 출력은 예가 됩니다. 4, 7, 10과 같은 세 가지 요소를 찾을 수 있습니다. 이를 해결하려면 요소를 k로 나눌 때 나머지를 추적해야 합니다. 이제 크기가 k인 다차원 배열 rem[][]을 만듭니다. 인덱스는 나머지를 표시하고 요소는 k로 나눌 때 해당 나머지에 따라 요소가 됩니다. 이제 나머지 집합을 탐색하여

    17. 2D 평면의 한 점에서 C++의 선까지 수직인 발 찾기

      2D 평면에 점 P가 있고 선 방정식이 있다고 가정하면 작업은 P에서 선까지 수직선의 발을 찾는 것입니다. 직선의 방정식은 ax + by + c =0입니다. 직선이 P를 지나고 직선에 수직인 방정식입니다. P와 Q를 지나는 직선의 방정식은 ay – bx + d =0이 됩니다. 또한 P(x1, y1), Q(x2, y2)도 방정식에 P의 좌표를 대입합니다. ay 1−bx 1+d=0이므로 d=bx1−ay 1 또한 Q는 주어진 선과 P와 Q를 지나는 선의 교점이므로 이 두 방정식의 해를 구합니다. ax+by+c=0,∧ay−bx+(

    18. C++ 프로그래밍에서 n번 반복한 후 얻은 이진 문자열에서 i' 인덱스 문자 찾기

      바이너리 문자열 bin이 있다고 가정합니다. 그런 다음 n번의 반복을 적용하고 각 반복에서 0은 01이 되고 1은 10이 되고 n번째 반복 후 문자열에서 i번째 인덱스 문자가 나옵니다. 따라서 이진 문자열이 101이고 n =2이고 i =3이면 첫 번째 반복 후에는 100110이 되고 다음 반복에서는 100101101001이 되므로 i번째 인덱스는 1을 유지합니다. 이 문제를 해결하려면 다음 단계를 따라야 합니다. 루프를 n번 실행하고 각 반복에서 문자열에 대해 다른 루프를 실행합니다. 2진 문자열의 각 문자를 변환하고 0이면

    19. n XOR n+1이 C++에서 주어진 k와 같도록 가장 작은 수 n 찾기

      양수 k가 있다고 가정합니다. n과 n+1의 XOR이 k와 같도록 양수 n을 찾아야 합니다. 따라서 k =7(111)이면 출력은 3이 됩니다. 3(011) 및 3 + 1 =4(100)이므로 011 XOR 100 =111(7) 두 가지 가능한 경우가 있습니다. n이 짝수임을 고려하십시오. n의 마지막 비트 =0. 그런 다음 n의 마지막 비트 + 1 =1. 나머지 비트는 동일합니다. 따라서 XOR은 1이 됩니다. n이 홀수일 때 마지막 비트는 1이고 n + 1 비트의 마지막 비트는 0입니다. 그러나 이 경우에는 캐리로 인해 더 많은

    20. C++의 표현식에서 주어진 여는 대괄호에 대한 닫는 대괄호의 인덱스 찾기

      대괄호가 있는 표현식이 있다고 가정합니다. 하나의 시작 괄호의 인덱스가 주어지면 그 끝 괄호를 찾아야 합니다. 따라서 표현식이 (25*6+(88-32+(50/10)+20))이고 여는 대괄호의 인덱스가 6인 경우 닫는 대괄호는 위치 23에 있습니다. 여기서는 스택 데이터 구조를 사용하여 이 문제를 해결합니다. 주어진 인덱스에서 표현식을 탐색하고 닫는 괄호를 찾으면 여는 괄호를 밀기 시작하고 스택이 비어 있을 때 스택에서 요소를 팝한 다음 인덱스를 반환합니다. 예시 #include<iostream> #include<s

    Total 5992 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:100/300  20-컴퓨터/Page Goto:1 94 95 96 97 98 99 100 101 102 103 104 105 106