Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C प्रोग्राम: जांचें कि सरणी पैलिंड्रोम है या नहीं (पुनरावृत्तीय)

पैलिंड्रोम सरणी

एक सरणी पैलिंड्रोम है यदि यह आगे और पीछे से समान पढ़ी जाती है।

उदाहरण

सरणीपैलिंड्रोम?
{1, 0, 0, 1}हाँ
{1, 2, 3, 4, 5}नहीं
{7}हाँ (एकल तत्व)
{}हाँ (खाली)
{1, 2, 2, 1}हाँ
{1, 2, 3, 2, 1}हाँ

पुनरावृत्तीय एल्गोरिदम

  1. दो पॉइंटर्स: start = 0, end = n-1
  2. जब तक start < end:
    • यदि arr[start] != arr[end] → गलत लौटाएं
    • start++, end--
  3. लूप पूरा → सही लौटाएं

C प्रोग्राम

#include <stdio.h>
#include <stdbool.h>

bool is_palindrome(int arr[], int n) {
    for (int i = 0, j = n - 1; i < j; i++, j--) {
        if (arr[i] != arr[j])
            return false;
    }
    return true;
}

int main() {
    int arr[] = {1, 0, 2, 3, 2, 2, 1};
    int n = sizeof(arr) / sizeof(arr[0]);
    
    printf("सरणी: ");
    for (int i = 0; i < n; i++) printf("%d ", arr[i]);
    printf("\n");
    
    if (is_palindrome(arr, n))
        printf("सरणी पैलिंड्रोम है\n");
    else
        printf("सरणी पैलिंड्रोम नहीं है\n");
    
    return 0;
}

आउटपुट

सरणी: 1 0 2 3 2 2 1
सरणी पैलिंड्रोम नहीं है

सही पैलिंड्रोम उदाहरण

सरणी: 1 2 3 2 1
सरणी पैलिंड्रोम है

फ्लैग-आधारित संस्करण (मूल कोड के समान)

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

सामान्यीकरण: किसी भी प्रकार के लिए

// मैक्रो का उपयोग करके जेनेरिक पैलिंड्रोम जांच
#define IS_PALINDROME(arr, n, type, cmp) ({ \
    bool result = true; \
    for (int i = 0, j = n-1; i < j; i++, j--) { \
        if (cmp(arr[i], arr[j]) != 0) { result = false; break; } \
    } \
    result; \
})

जटिलता

  • समय: O(n/2) = O(n)
  • स्थान: O(1)
  • तुलना: पुनरावृत्तीय, रिकर्सिव (O(n) स्टैक) से बेहतर

स्ट्रिंग पैलिंड्रोम

bool is_string_palindrome(char *str) {
    int len = strlen(str);
    for (int i = 0, j = len - 1; i < j; i++, j--) {
        if (str[i] != str[j]) return false;
    }
    return true;
}
  1. C प्रोग्राम: रिकर्सन का उपयोग करके जांचें कि सरणी पैलिंड्रोम है या नहीं C प्रोग्राम: रिकर्सन का उपयोग करके जांचें कि सरणी पैलिंड्रोम है या नहीं

    पैलिंड्रोम सरणी एक सरणी पैलिंड्रोम होती है यदि यह आगे और पीछे से समान पढ़ी जाए। उदाहरण: {1, 2, 3, 2, 1} ✓, {1, 0, 0, 1} ✓, {1, 2, 3, 4} ✗ रिकर्सिव दृष्टिकोण आधार मामला: यदि = end → पैलिंड्रोम (true) जांच: यदि arr[start] != arr[end] → पैलिंड्रोम नहीं (false) रिकर्सन: start+1 और end-1 के साथ कॉल करे

  1. C प्रोग्राम: प्लस परफेक्ट नंबर (आर्मस्ट्रांग संख्या) जांचें C प्रोग्राम: प्लस परफेक्ट नंबर (आर्मस्ट्रांग संख्या) जांचें

    प्लस परफेक्ट नंबर (आर्मस्ट्रांग संख्या) एक संख्या प्लस परफेक्ट (आर्मस्ट्रांग) है यदि इसके अंकों के nवें घात का योग (n = अंकों की संख्या) संख्या के बराबर हो। सूत्र n अंकों की संख्या के लिए: Σ(अंकⁿ) = संख्या उदाहरण संख्याअंकगणनायोगआर्मस्ट्रांग? 1631,6,31³+6³+3³ = 1+216+27244नहीं 3713,7,13³+7³+1³

  1. C++ में STL का उपयोग करके जांचें कि क्या सरणी पैलिंड्रोम है या नहीं C++ में STL का उपयोग करके जांचें कि क्या सरणी पैलिंड्रोम है या नहीं

    n पूर्णांकों की एक सरणी arr[n] दी गई है, कार्य यह जांचना है कि क्या सरणी एक पैलिंड्रोम है या नहीं। हमें C++ में STL (स्टैंडर्ड टेम्पलेट लाइब्रेरी) का उपयोग करके यह कार्य करना है। C++ में STL (Standard Template Library) की एक विशेषता है, यह C++ टेम्पलेट कक्षाओं का एक समूह है जिसका उपयोग डेटा संरचना