n개의 정수로 구성된 배열 arr[n]이 주어지면 배열이 회문인지 아닌지를 찾는 것이 작업입니다. C++에서 STL을 사용하여 명시된 작업을 수행해야 합니다.
C++에는 STL(Standard Template Library)의 기능이 있으며, 데이터 구조와 스택, 큐, 목록 등과 같은 여러 기능을 제공하는 데 사용되는 C++ 템플릿 클래스 집합입니다. 이를 사용하려면 지식이 있어야 합니다. 템플릿 클래스 수.
회문(Palindrome)은 시퀀스의 앞이나 뒤에서 동일하게 읽는 시퀀스입니다. 회문의 몇 가지 간단한 예는 − MADAM, RACECAR 등입니다. 배열은 아래 주어진 예와 같은 회문입니다. −
따라서 작업은 C++에서 STL을 사용하여 배열이 회문인지 여부를 알아내고 회문이면 "회문입니다"를 인쇄하고 회문이 아니면 "회문이 아닙니다"를 인쇄하는 작업은 간단합니다.
입력
arr[] = {1, 2, 3, 5, 3, 2, 1}
출력
its a palindrome
입력
arr[] = {1, 2, 3, 4, 5}
출력
its not a palindrome
문제를 해결하기 위해 다음과 같은 접근 방식을 사용합니다.
-
시작 시 기본적으로 플래그 =0을 설정합니다.
-
0에서 크기 n/2까지 배열 i를 반복합니다.
-
내가 확인할 때마다 ar[i]! =arr[n-i-1] 그런 다음 플래그를 1로 설정하고 중단
-
루프가 종료된 후 플래그가 1이면 "회문입니다"가 인쇄되고 그렇지 않으면 "회문이 아닙니다"가 인쇄됩니다.
알고리즘
Start 1→ declare function to check if an array is palindrome or not void check_palindrome(int arr[], int size) declare int flag = 0 Declare int arr_2[size] Call memcpy(arr_2, arr, size * sizeof(int)) Call reverse(arr, arr + size) Loop For int i = 0 and i < size and i++ IF (arr[i] != arr_2[i]) Set flag = 1 Break End IF (flag == 0) Print its a palindrome End Else Print its not a palindrome End Step 2→ In main() Declare int arr[] = { 2,3,4,3,2 } Declare int size = sizeof(arr) / sizeof(arr[0]) Call check_palindrome(arr, size)호출
예시
#include <bits/stdc++.h> using namespace std; void check_palindrome(int arr[], int size){ int flag = 0; int arr_2[size]; memcpy(arr_2, arr, size * sizeof(int)); reverse(arr, arr + size); for (int i = 0; i < size; i++) if (arr[i] != arr_2[i]){ flag = 1; break; } if (flag == 0) cout << "its a palindrome\n"; else cout << "its not a palindrome\n"; } int main(){ int arr[] = { 2,3,4,3,2 }; int size = sizeof(arr) / sizeof(arr[0]); check_palindrome(arr, size); return 0; }
출력
위의 코드를 실행하면 다음 출력이 생성됩니다 -
its a palindrome