Складанне дзвюх матрыц  


Узровень складанасці Лёгка
Часта пытаюцца ў Алацыя асана Жаданне
масіў матрыца Школьнае праграмаванне

Пастаноўка праблемы  

У задачы "Даданне дзвюх матрыц" мы прывялі дзве матрыцы a і b. Мы павінны знайсці фінал матрыца пасля дадання матрыцы b у матрыцу a. Калі парадак аднолькавы для абедзвюх матрыц, то толькі мы можам дадаваць іх, інакш не атрымліваецца. Калі мы не можам іх дадаць, надрукуйце "Мы не можам дадаць гэтыя матрыцы".

Уваходны фармат  

Першы радок змяшчае чатыры цэлыя значэнні r1, c1, r2, c2. Дзе r1 і c1 абазначаюць колькасць радкоў і слупкоў першай матрыцы. А r2, c2 абазначае колькасць радкоў, слупкоў другой матрыцы.

Наступныя r1 радкі, якія ўтрымліваюць цэлыя значэнні c1.

І наступныя r2 радкі, якія змяшчаюць цэлыя значэнні c2.

Фармат вываду  

Раздрукуйце канчатковую матрыцу пасля дадання такім чынам, каб кожны радок пачынаўся з новага радка і кожны элемент, падзелены прабелам у кожным радку.

Constraints  

  • 1 <= r1, c1, r2, c2 <= 5000.
  • 1 <= | m [i] [j] | <= 10 ^ 9, дзе m - матрыца і становішча элемента ў i-м радку і j-м слупку.

Прыклад  

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

Тлумачэнне: Мы можам знайсці складанне матрыц, дадаўшы адпаведныя запісы ў матрыцах A і B.

Складанне дзвюх матрыц

Складанне дзвюх матрыц

Складанне дзвюх матрыц

Складанне дзвюх матрыц

Алгарытм складання дзвюх матрыц  

1. Для кожнага радка ў дзвюх матрыцах.

Глядзіце таксама
Укараненне кэша LRU

1.1 Дадайце адпаведныя элементы ў матрыцу B з элементамі ў матрыцы A.

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 для ўводу другой матрыцы.

Глядзіце таксама
Змяшчае дублікат

Спасылка