Προσθήκη δύο πινάκων


Επίπεδο δυσκολίας Εύκολος
Συχνές ερωτήσεις Αλάτι Asana Επιθυμώ
Παράταξη Μήτρα Σχολικός προγραμματισμός

Δήλωση προβλήματος

Στο πρόβλημα «Προσθήκη δύο πινάκων», έχουμε δώσει δύο πίνακες α και β. Πρέπει να βρούμε τον τελικό μήτρα μετά την προσθήκη του πίνακα b στη μήτρα a. Εάν η παραγγελία είναι η ίδια και για τους δύο πίνακες τότε μόνο μπορούμε να τα προσθέσουμε αλλιώς δεν μπορούμε. Εάν δεν μπορούμε να τα προσθέσουμε τότε εκτυπώστε "Δεν μπορούμε να προσθέσουμε αυτούς τους πίνακες".

Μορφή εισόδου

Η πρώτη γραμμή που περιέχει τέσσερις ακέραιες τιμές r1, c1, r2, c2. Όπου r1 και c1 δηλώνουν τον αριθμό σειρών και στηλών του πρώτου πίνακα. Και r2, c2 υποδηλώνει τον αριθμό σειρών, στηλών του δεύτερου πίνακα.

Επόμενες γραμμές r1 που περιέχουν ακέραιες τιμές c1.

Και επόμενες γραμμές r2 που περιέχουν ακέραιες τιμές c2.

Μορφή εξόδου

Εκτυπώστε τον τελικό πίνακα μετά την προσθήκη με τέτοιο τρόπο ώστε κάθε σειρά να ξεκινά από τη νέα γραμμή και κάθε στοιχείο διαχωρισμένο με κενό σε κάθε σειρά.

Περιορισμοί

  • 1 <= r1, c1, r2, c2 <= 5000.
  • 1 <= | m [i] [j] | <= 10 ^ 9 όπου m είναι ο πίνακας και η θέση του στοιχείου στη στήλη ith και jth.

Παράδειγμα

2 2 2 2
4 8
3 7
1 0
5 2
5 8
8 9

Επεξήγηση: Μπορούμε να βρούμε την προσθήκη πινάκων προσθέτοντας τις αντίστοιχες καταχωρήσεις στον πίνακα Α και Β.

Προσθήκη δύο πινάκων

Προσθήκη δύο πινάκων

Προσθήκη δύο πινάκων

Προσθήκη δύο πινάκων

Αλγόριθμος για την προσθήκη δύο πινάκων

1. Για κάθε σειρά των δύο πινάκων.

1.1 Προσθέστε τα αντίστοιχα στοιχεία στον πίνακα Β με τα στοιχεία στον πίνακα Α.

1.2 Αποθηκεύστε το αποτέλεσμα στην ίδια θέση σε κάποια βοηθητική μήτρα.

2. Μεταβείτε στην επόμενη σειρά και ακολουθήστε τα βήματα 1.1 και 1.2 μέχρι το τέλος των πινάκων.

3. Εκτυπώστε τη βοηθητική μήτρα.

Εκτέλεση

Πρόγραμμα C ++ για προσθήκη δύο πινάκων

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int r1,c1,r2,c2;
    cin>>r1>>c1>>r2>>c2;
    int a[r1][c1];
    int b[r2][c2];
    for(int i=0;i<r1;i++)
    {
        for(int j=0;j<c1;j++)
        {
            cin>>a[i][j];
        }
    }
    for(int i=0;i<r2;i++)
    {
        for(int j=0;j<c2;j++)
        {
            cin>>b[i][j];
        }
    }
    if(c1!=c2 || r1!=r2)
    {
        cout<<"We can’t add these matrices";
    }
    else
    {
    int c[r1][c2];
    for(int i=0;i<r1;i++)
    {
        for(int j=0;j<c2;j++)
        {
            c[i][j]=a[i][j]+b[i][j];
            cout<<c[i][j]<<"  ";
        }
        cout<<endl;
    }
    }
    return 0;
}

Πρόγραμμα Java για προσθήκη δύο πινάκων

import java.io.*; 
import java.util.Scanner;
class TutorialCup
{ 
    // Driver code 
    public static void main(String[] args) 
    { 
        int r1,c1,r2,c2;
        Scanner inp = new Scanner(System.in);
        r1 = inp.nextInt();
        c1 = inp.nextInt();
        r2 = inp.nextInt();
        c2 = inp.nextInt();
        int a[][] = new int[r1][c1];
        for(int i=0;i<r1;i++)
        {
            for(int j=0;j<c1;j++)
            {
                a[i][j]=inp.nextInt();
            }
        }
        int b[][] = new int[r2][c2];
        for(int i=0;i<r2;i++)
        {
            for(int j=0;j<c2;j++)
            {
                b[i][j]=inp.nextInt();
            }
        }
        if(r1!=r2 && c1!=c2) 
        { 
            System.out.println("\nWe can’t add these matrices."); 
        } 
        else
        {
            int c[][] = new int[r1][c1];
            for(int i=0;i<r1;i++)
            {
                for(int j=0;j<c1;j++)
                {
                    c[i][j]=a[i][j]+b[i][j];
                    System.out.print(c[i][j] + " ");
                }
                System.out.println();
            }
        }
    } 
}
2 2 2 2
2 8 
0 9 
5 6 
11 3
7 14
11 12

Ανάλυση πολυπλοκότητας για προσθήκη δύο πινάκων

Χρόνος πολυπλοκότητας

O (n ^ 2) όπου n είναι το μέγιστο των r1 και c1. Εδώ τρέχουμε απλά δύο βρόχους, ο πρώτος βρόχος τρέχει r1 φορές και ο δεύτερος βρόχος τρέχει c1 φορές.

Διαστημική πολυπλοκότητα

O (m ^ 2) όπου m είναι το μέγιστο των r1 και c1. Εδώ δημιουργούμε επιπλέον χώρο για την αποθήκευση του αποτελέσματος της προσθήκης συγκεκριμένων πινάκων. Εδώ δηλώσαμε επίσης το μέγεθος r1 * c1 για τη λήψη της πρώτης μήτρας και το μέγεθος r2 * c2 για τη λήψη της δεύτερης μήτρας.

Αναφορά