Адніманне дзвюх матрыц  


Узровень складанасці Лёгка
Часта пытаюцца ў Capgemini MAQ o9 рашэнні
масіў матрыца Школьнае праграмаванне

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

У задачы "Адніманне дзвюх матрыц" мы прывялі дзве матрыцы 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
2 8
0 9
5 6
11 3
-3 2
-11 6

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

Адніманне дзвюх матрыц

Адніманне дзвюх матрыц

Адніманне дзвюх матрыц

Адніманне дзвюх матрыц

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

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

Глядзіце таксама
Ньюман – Шэнкс – Уільямс

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 subtract 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 subtract 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
-3  2  
-11  6

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

Складанасць часу

O (n ^ 2) дзе n - максімум r1 і c1. Тут мы проста запускаем дзве завесы, першы цыкл запускаецца r1 раз, а другі цыкл - c1 раз.

Касмічная складанасць

O (m ^ 2) дзе m - максімум r1 і c1. Тут мы ствараем дадатковае месца для захоўвання выніку аднімання матрыц. Тут мы таксама абвясцілі памер r1 * c1 для ўводу першай матрыцы і памер r2 * c2 для ўводу другой матрыцы.

Глядзіце таксама
Надрукаваць зменены масіў пасля некалькіх аперацый павелічэння дыяпазону масіва

Спасылка