इस समस्या में, हमें एक सरणी arr[] दी गई है जिसमें प्रत्येक तत्व बॉक्सों के ढेर का प्रतिनिधित्व करता है (प्रत्येक इकाई ऊंचाई का)। हमारा कार्य हटाए जाने वाले बॉक्सों की संख्या ज्ञात करना है।
व्यक्ति सरणी के इंडेक्स 0 पर बॉक्सों के ढेर की ऊंचाई पर खड़ा है और उसे सरणी के अंत तक जाने की आवश्यकता है। एक ढेर से दूसरे ढेर पर जाने की शर्त अगले पर कूदना है।
कूद तभी संभव है जब अगला ढेर समान ऊंचाई पर हो या उससे कम ऊंचाई पर हो। यदि अगले ढेर की ऊंचाई अधिक है तो व्यक्ति को अगले ढेर से बॉक्स हटाने होंगे, जब तक ऊंचाई समान न हो जाए। हमें पहले बॉक्स से अंतिम तक जाते समय हटाए गए बॉक्सों की कुल संख्या ज्ञात करनी है।
उदाहरण से समझते हैं:
इनपुट: arr[] = {5, 7, 3, 1, 2} आउटपुट: 3 व्याख्या
प्रारंभ में, व्यक्ति ऊंचाई 5 पर है।
चरण 1 - दूसरी पोजीशन पर जाने के लिए जिसकी ऊंचाई 7 है, व्यक्ति को 2 बॉक्स हटाने होंगे।
चरण 2 - तीसरी पोजीशन पर जाने के लिए जिसकी ऊंचाई 3 है, कोई बॉक्स नहीं हटाया जाता।
चरण 3 - अगली पोजीशन पर जाने के लिए जिसकी ऊंचाई 1 है, कोई बॉक्स नहीं हटाया जाता।
चरण 4 - अगली पोजीशन पर जाने के लिए जिसकी ऊंचाई 2 है, एक बॉक्स हटाया जाता है। इससे हटाए गए बॉक्सों की संख्या 3 हो जाती है।
समाधान दृष्टिकोण
समस्या का एक सरल समाधान सरणी को शुरुआत से अंत तक ट्रैवर्स करना और जांचना है कि क्या अगला तत्व वर्तमान से अधिक है। यदि हां, तो उनके अंतर को boxesRemoved वेरिएबल में जोड़ें जो हटाए जाने वाले बॉक्सों की कुल संख्या रखता है। अंत में, हम boxesRemoved लौटाएंगे।
उदाहरण
हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम:
#include <iostream> using namespace std; int findBoxesRemoved(int arr[], int n){ int boxesRemoved = 0; for (int i = 0; i < n-1; i++) { if (arr[i] < arr[i+1]) boxesRemoved += (arr[i+1] - arr[i]); } return boxesRemoved; } int main(){ int arr[] = { 5, 7, 3, 1, 2, 6 }; int n = sizeof(arr) / sizeof(arr[0]); cout<<"The total number of boxes to be removed to reach the end is "<<findBoxesRemoved(arr, n); return 0; } आउटपुट
The total number of boxes to be removed to reach the end is 7