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

C++ में विकर्ण योग के बराबर योग वाली पंक्तियों/स्तंभों की गणना


हमें एक मैट्रिक्स दी गई है जो पंक्तियों और स्तंभों वाली एक 2-D सरणी है और कार्य सभी पंक्तियों और स्तंभों के योग की गणना करना है जैसे कि यह प्रमुख या द्वितीयक मैट्रिक्स के योग के बराबर हो।

इनपुट -

int arr[row][col] = {
    { 4, 1, 7 },
    { 10, 3, 5 },
    { 2, 2, 11 }
}

आउटपुट - विकर्ण योग के बराबर योग वाली पंक्तियों/स्तंभों की संख्या - 2

व्याख्या -

प्रमुख विकर्ण का योग है: 4 + 3 + 11 = 18 और द्वितीयक विकर्ण का योग है: 7 + 3 + 2 = 12। पंक्तियों के योग हैं: 4 + 1 + 7 = 12 (सही), 10 + 3 + 5 = 18 (सही), 2 + 2 + 11 = 15 (गलत) और स्तंभों के योग हैं: 4 + 10 + 2 = 16 (गलत), 1 + 3 + 2 = 6 (गलत), 7 + 5 + 11 = 23 (गलत)। इसलिए, प्रमुख विकर्ण और द्वितीयक विकर्ण के योग से मेल खाने वाली पंक्तियों/स्तंभों की संख्या - 2

उपयोग किया गया दृष्टिकोण

  • पंक्ति आकार और स्तंभ आकार की एक 2-D सरणी बनाकर मैट्रिक्स बनाएं
  • प्रमुख और द्वितीयक मैट्रिक्स के लिए चर बनाएं। साथ ही, गिनती संग्रहीत करने के लिए एक काउंट चर
  • i से 0 से col तक और j से col-1 से 0 तक लूप FOR शुरू करें, i बढ़ाएं और j घटाएं
  • लूप के अंदर, प्रमुख को प्रमुख + matrix[i][i] और द्वितीयक को द्वितीयक + matrix[i][j] के रूप में सेट करें
  • i से 0 से col तक लूप FOR शुरू करें
  • लूप के अंदर, row को 0 और col को 0 सेट करें और लूप के अंदर, j से 0 से col तक एक और लूप FOR शुरू करें
  • लूप के अंदर, row को row + matrix[i][j] के रूप में सेट करें
  • लूप के अंदर, j से 0 से col तक एक और लूप FOR शुरू करें
  • लूप के अंदर, col को col + matrix[j][i] के रूप में सेट करें
  • लूप के अंदर, जांचें IF (row == प्रमुख) || (row == द्वितीयक) तो काउंट को 1 से बढ़ाएं
  • लूप के अंदर, जांचें IF (col == प्रमुख) || (col == द्वितीयक) तो काउंट को 1 से बढ़ाएं
  • काउंट लौटाएं
  • परिणाम प्रिंट करें।

C++ कार्यान्वयन

#include <iostream>
#define row 3
#define col 3
using namespace std;

int diagonal_sum(int matrix[row][col]) {
    int principal = 0;
    int secondary = 0;
    int r = 0;
    int c = 0;
    int count = 0;
    int i = 0, j = 0;
    for (i = 0, j = col - 1; i < col; i++, j--) {
        principal += matrix[i][i];
        secondary += matrix[i][j];
    }
    for (int i = 0; i < col; i++) {
        r = 0;
        c = 0;
        for (int j = 0; j < col; j++) {
            r += matrix[i][j];
        }
        for (int j = 0; j < col; j++) {
            c += matrix[j][i];
        }
        if ((r == principal) || (r == secondary)) {
            count++;
        }
        if ((c == principal) || (c == secondary)) {
            count++;
        }
    }
    return count;
}

int main() {
    int matrix[row][col] = {
        { 4, 1, 7 },
        { 10, 3, 5 },
        { 2, 2, 11 }
    };
    cout << "Count of rows/columns with sum equals to diagonal sum are: " << diagonal_sum(matrix);
    return 0;
}

आउटपुट

Count of rows/columns with sum equals to diagonal sum are: 2
  1. C++ में उन नोड्स को गिनना जिनका योग X के साथ फाइबोनैचि संख्या है C++ में उन नोड्स को गिनना जिनका योग X के साथ फाइबोनैचि संख्या है

    नोड्स के वजन वाली एक बाइनरी ट्री दी गई है। लक्ष्य उन नोड्स की संख्या ढूंढना है जिनके वजन ऐसे हैं कि संख्या एक फाइबोनैचि संख्या है। फाइबोनैचि श्रृंखला में संख्याएं हैं: 0, 1, 1, 2, 3, 5, 8, 13... nth संख्या (n-1)th और (n-2)th का योग है। यदि वजन 13 है तो यह एक फाइबोनैचि संख्या है इसलिए नोड गिना जाएगा।

  1. - C++ में Subarray Sum Equals K

    मान लीजिए हमारे पास पूर्णांकों की एक सरणी और एक पूर्णांक k है, हमें उन सतत उपसरणियों (continuous subarrays) की कुल संख्या ढूंढनी है जिनका योग k के समान है। इसलिए यदि nums सरणी [1, 1, 1] है और k 2 है, तो आउटपुट 2 होगा।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -sums नामक एक मैप परिभाषित करें, tem

  1. - C++ में B से अधिक A वाले प्रीफिक्सेस

    इस समस्या में, हमें केवल a और b वाली स्ट्रिंग str और एक इंटीजर N दिया गया है जिससे str को N बार जोड़कर एक स्ट्रिंग बनाई जाती है। हमारा कार्य उन सबस्ट्रिंग्स की कुल संख्या प्रिंट करना है जिनमें a की गिनती b की गिनती से अधिक है।समस्या को समझने के लिए एक उदाहरण लेते हैंInput: aab 2 Output: 9 Explanatio