ให้อาร์เรย์ arr[n] ของจำนวนเต็ม n จำนวนเต็ม ภารกิจคือค้นหาว่าอาร์เรย์นั้นเป็นพาลินโดรมหรือไม่ เราต้องทำงานที่ระบุโดยใช้ STL ใน C++
ใน C++ มีฟีเจอร์ของ STL (Standard Template Library) เป็นชุดของคลาสเทมเพลต C++ ที่ใช้จัดทำโครงสร้างข้อมูลและฟังก์ชันต่างๆ เช่น สแต็ค คิว รายการ ฯลฯ หากต้องการใช้สิ่งนี้ต้องมีความรู้ ของคลาสเทมเพลต
Palindrome เป็นซีเควนซ์ที่อ่านเหมือนกันจากด้านหน้าหรือด้านหลังของซีเควนซ์ ตัวอย่างง่ายๆ ของ palindrome ได้แก่ − MADAM, RACECAR เป็นต้น อาร์เรย์จะเป็น palindrome เช่นในตัวอย่างด้านล่าง −

ดังนั้น งานนี้จึงง่ายในการค้นหาว่าอาร์เรย์นั้นเป็น palindrome หรือไม่ใช้ STL ใน C++ และพิมพ์ "its a palindrome" หากเป็น palindrome อื่น "ไม่ใช่ palindrome" หากไม่ใช่ palindrome
ป้อนข้อมูล
arr[] = {1, 2, 3, 5, 3, 2, 1} ผลผลิต
its a palindrome
ป้อนข้อมูล
arr[] = {1, 2, 3, 4, 5} ผลผลิต
its not a palindrome
แนวทางที่ใช้ด้านล่างมีดังต่อไปนี้ในการแก้ปัญหา
-
ตั้งค่าสถานะ =0 โดยค่าเริ่มต้นในการเริ่มต้น
-
วนอาร์เรย์ i จาก 0 ถึงขนาด n/2
-
ทุกครั้งที่ฉันตรวจสอบว่า arr[i]! =arr[n-i-1] แล้วตั้งค่าแฟล็ก =1 แล้วแตก
-
หลังจากวนซ้ำสิ้นสุดลง ถ้าแฟล็กเป็น 1 ให้พิมพ์ "its a palindrome" มิฉะนั้นจะพิมพ์ "its not a palindrome"
อัลกอริทึม
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