ให้อาร์เรย์ 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