Informatică, întrebare adresată de btomici, 9 ani în urmă

Se citesc de la tastatură două numere N și M, N>=M. Pe urmă se citesc două matrici pătratice de dimensiuni N, respectiv M, conținând numere întregi. Afișați toate pozitiile unde a doua matrice apare în prima matrice. Afișarea se va face pe ecran sub forma unor perechi de forma (linie, coloană). Dacă a doua matrice nu apare în prima matrice, se va afișa textul “Nu apare”.
Spre exemplu dacă se introduce:

5 3
1 0 1 1 1
0 1 0 1 1
1 0 1 1 1
0 1 0 1 1
1 0 1 1 1

0 1 1
1 0 1
0 1 1

se va afișa pe ecran:

(0,1) (2,1)

Răspunsuri la întrebare

Răspuns de CRG
0
// Example program
#include <iostream>
#include <string>

using namespace std;

typedef int matrice[30][30];

bool submatriceEgala(matrice A, matrice B, int M, int iStart, int jStart) {
    for(int i = 0; i < M; i++)
        for(int j = 0; j < M; j++)
            if(A[iStart + i][jStart + j] != B[i][j])
                return false;
    return true;
}

void citireMatrice(matrice A, int nrLinii) {
    for(int i = 0; i < nrLinii; i++)
        for(int j = 0; j < nrLinii; j++)
            cin >> A[i][j];
}

int main() {
    matrice A, B;
    int N, M;
    cin >> N >> M;
    citireMatrice(A, N);
    citireMatrice(B, M);
    
    for(int i = 0; i < N - M + 1; i++)
        for(int j = 0; j < N - M + 1; j++)
            if(submatriceEgala(A, B, M, i, j))
                cout << "(" << i << "," << j << ") ";
    
    return 0;
    
}


Alte întrebări interesante