यहां हम सरणी से संबंधित एक दिलचस्प समस्या देखेंगे। n तत्वों के साथ एक सरणी है। हमें n तत्वों की एक और सरणी बनानी है। लेकिन दूसरी सरणी की i-वें स्थिति i-वें तत्व को छोड़कर पहले सरणी के सभी तत्वों का योग धारण करेगी। और एक बाधा यह है कि हम इस समस्या में घटाव ऑपरेटर का उपयोग नहीं कर सकते हैं।
यदि हम घटाव, संचालन का उपयोग कर सकते हैं, तो हम सभी तत्वों का योग प्राप्त करके इस समस्या को आसानी से हल कर सकते हैं, फिर पहले सरणी के i-वें तत्व को घटाएं और इसे दूसरे सरणी के i-वें स्थान पर संग्रहीत करें।
यहां हम हर बार तत्वों को जोड़कर इसे हल कर रहे हैं, और स्थिति i पर तत्व को अनदेखा कर रहे हैं, क्योंकि मैं 0..n-1 में हूं। आइए बिंदु प्राप्त करने के लिए एल्गोरिथम देखें।
एल्गोरिदम
sumArray(arr, n)
begin define an array called res of size n for all elements i in arr, do sum := 0 for all elements j in arr, do if i and j are not same, then sum := sum + arr[j] end if done res[i] = sum done return res end
उदाहरण
#include<iostream> using namespace std; void printArray(int arr[], int n) { for(int i = 0; i<n; i++) { cout << arr[i] << " "; } cout << endl; } void sumArray(int arr[], int resArr[], int n) { for(int i = 0; i<n; i++) { int sum = 0; for(int j =0; j<n; j++ ) { if(i != j) { sum += arr[j]; } } resArr[i] = sum; } } main() { int myArr[7] = {5, 4, 7, 6, 9, 2, 3}; int resArr[7]; cout << "Initial Array: "; printArray(myArr, 7); sumArray(myArr, resArr, 7); cout << "Final Array: "; printArray(resArr, 7); }
आउटपुट
Initial Array: 5 4 7 6 9 2 3 Final Array: 31 32 29 30 27 34 33