Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

โปรแกรม C ตรวจสอบ Array ว่าเป็น Palindrome (ไม่ใช้ Recursion)

ได้รับอาร์เรย์ arr[] ขนาด n ตรวจสอบว่าเป็น Palindrome หรือไม่

Palindrome = อ่านจากหน้าหลังได้เหมือนกัน (เช่น MADAM, NAMAN)

ตัวอย่าง

Input: arr[] = {1, 0, 0, 1}  Output: Array is palindrome
Input: arr[] = {1, 2, 3, 4, 5}  Output: Array is not palindrome

แนวทาง (Iterative)

  • ใช้สอง pointer: i เริ่ม 0, j เริ่ม n-1
  • วนลูป i < n/2, j >= n/2
  • ถ้า arr[i] != arr[j] → flag = 1, break
  • i++, j--
  • ถ้า flag=1 → ไม่ใช่ palindrome

อัลกอริทึม

Start
ฟังก์ชัน pallindrome(arr[], n):
    i=0, j=n-1, flag=0
    for i=0, j=n-1; i=n/2; i++, j--:
        if arr[i] != arr[j]: flag=1; break
    if flag==1 return 0 else return 1

main():
    arr[] = {1,0,2,3,2,2,1}
    n = sizeof(arr)/sizeof(arr[0])
    if pallindrome(arr,n) print "Array is palindrome"
    else print "Array is not palindrome"
Stop

โค้ดตัวอย่าง

#include <stdio.h>

int pallindrome(int arr[], int n) {
    int i, j, flag = 0;
    for (i = 0, j = n - 1; i < n/2 && j >= n/2; i++, j--) {
        if (arr[i] != arr[j]) { flag = 1; break; }
    }
    if (flag == 1) return 0;
    else return 1;
}

int main() {
    int arr[] = {1, 0, 2, 3, 2, 2, 1};
    int n = sizeof(arr) / sizeof(arr[0]);
    if (pallindrome(arr, n))
        printf("Array is palindrome\n");
    else
        printf("Array is not palindrome\n");
    return 0;
}

ผลลัพธ์

Array is not palindrome