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

सिंगल मूव्स का उपयोग करके ऐरे तत्व को k से मूव करना

मान लीजिए हमारे पास एक ऐरे है जिसमें 1 से n तक n तत्व शफल्ड ऑर्डर में हैं। एक और पूर्णांक K दिया गया है। N लोग हैं जो बैडमिंटन खेलने के लिए कतार में खड़े हैं। पहले दो खिलाड़ी खेलने जाएंगे, फिर हारने वाला कतार के अंत में जाएगा। विजेता कतार के अगले व्यक्ति के साथ खेलेगा और इसी तरह। वे तब तक खेलेंगे जब तक कोई लगातार K बार नहीं जीत जाता। फिर वह खिलाड़ी विजेता बन जाता है।

यदि कतार [2, 1, 3, 4, 5] है और K = 2, तो आउटपुट 5 होगा। व्याख्या देखें:

(2, 1) खेलते हैं, 2 जीतता है, इसलिए 1 कतार में जुड़ जाएगा: [3, 4, 5, 1] (2, 3) खेलते हैं, 3 जीतता है, 2 जुड़ता है: [4, 5, 1, 2] (3, 4) खेलते हैं, 4 जीतता है, 3 जुड़ता है: [5, 1, 2, 3] (4, 5) खेलते हैं, 5 जीतता है, 4 जुड़ता है: [1, 2, 3, 4] (5, 1) खेलते हैं, 5 जीतता है, 1 जुड़ता है: [2, 3, 4, 1] चूंकि 5 लगातार दो मैच जीतता है, आउटपुट 5 है।

एल्गोरिदम

winner(arr, n, k)

शुरुआत
    यदि k >= n-1, तो n वापस करें
    best_player := 0
    win_count := 0
    arr में प्रत्येक तत्व e के लिए करें
        यदि e > best_player, तो
            best_player := e
            यदि e 0वां तत्व है, तो win_count := 1
        अन्यथा
            win_count को 1 से बढ़ाएं
        यदि win_count >= k, तो best_player वापस करें
    पूर्ण
    best_player वापस करें
समाप्त

उदाहरण

#include <iostream>
using namespace std;

int winner(int arr[], int n, int k) {
    if (k >= n - 1) return n;
    int best_player = 0, win_count = 0;
    for (int i = 0; i < n; i++) {
        if (arr[i] > best_player) {
            best_player = arr[i];
            if (i) win_count = 1;
        } else {
            win_count += 1;
        }
        if (win_count >= k) return best_player;
    }
    return best_player;
}

int main() {
    int arr[] = {3, 1, 2};
    int n = sizeof(arr) / sizeof(arr[0]);
    int k = 2;
    cout << winner(arr, n, k);
    return 0;
}

आउटपुट

3
  1. C भाषा में लीनियर सर्च का उपयोग करके ऐरे में न्यूनतम एलिमेंट कैसे खोजें? C भाषा में लीनियर सर्च का उपयोग करके ऐरे में न्यूनतम एलिमेंट कैसे खोजें?

    C प्रोग्रामिंग भाषा दो प्रकार की सर्चिंग तकनीक प्रदान करती है: लीनियर सर्च बाइनरी सर्च लीनियर सर्च की एलिमेंट की खोज लीनियर फैशन में की जाती है। यह सबसे सरल सर्चिंग तकनीक है। इसके लिए लिस्ट के सॉर्टेड होने की आवश्यकता नहीं होती। सीमा - यह अधिक समय लेता है और सिस्टम की शक्ति को कम करता है। इनपु

  1. C भाषा का उपयोग करके क्यू में एलिमेंट डिलीट करना समझाना C भाषा का उपयोग करके क्यू में एलिमेंट डिलीट करना समझाना

    डेटा स्ट्रक्चर संरचित तरीके से व्यवस्थित डेटा का संग्रह है। इसे दो प्रकारों में विभाजित किया गया है: लीनियर डेटा स्ट्रक्चर - डेटा लीनियर फैशन में व्यवस्थित है। उदाहरण: ऐरे, स्ट्रक्चर्स, स्टैक्स, क्यूज, लिंक्ड लिस्ट। नॉन-लीनियर डेटा स्ट्रक्चर - डेटा हायरार्किकल तरीके से व्यवस्थित है। उदाहरण: ट्रीज,

  1. C में लिंक्ड लिस्ट का उपयोग करके प्रायोरिटी क्यू (Priority Queue) C में लिंक्ड लिस्ट का उपयोग करके प्रायोरिटी क्यू (Priority Queue)

    हमें डेटा और पूर्णांक मान के रूप में प्राथमिकता दी गई है और कार्य दी गई प्राथमिकता के अनुसार एक लिंक्ड लिस्ट बनाना और परिणाम प्रदर्शित करना है। क्यू एक FIFO डेटा संरचना है जिसमें पहले डाला गया तत्व हटाया जाने वाला पहला होता है। एक प्रायोरिटी क्यू एक प्रकार की क्यू है जिसमें तत्वों को प्राथमिकता के