Matrici și algoritmi comuni
Citire
De obicei, atunci când trebuie să citim o matrice vom primi mai întâi ca input un n
și un m
, reprezentând numărul de linii, respectiv cel de coloane.
Exemplu
#include <iostream>
using namespace std;
int n, m;
int mat[505][505];
int main() {
cin >> n >> m;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> mat[i][j];
}
}
return 0;
}
Parcurgerea matricilor
Unele probleme pot necesita parcurgerea matricilor în diferite forme.
Parcurgerea tuturor elementelor
Indexat de la 0
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
int x = mat[i][j];
}
}
Parcurgerea diagonalei principale
Indexat de la 0
for (int i = 0; i < n; i++) {
int x = mat[i][i];
}
Parcurgerea diagonalei secundare
Indexat de la 0
for (int i = 0; i < n; i++) {
int x = mat[i][n - i - 1];
}
Parcurgerea elementelor de deasupra diagonalei principale
Indexat de la 0
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
int x = mat[i][j];
}
}
Parcurgerea elementelor de deasupra diagonalei secundare
Indexat de la 0
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - i; j++) {
int x = mat[i][j];
}
}
Parcurgerea elementelor de sub diagonala principale
Indexat de la 0
for (int i = 0; i < n; i++) {
for (int j = 0; j < i + 1; j++) {
int x = mat[i][j];
}
}
Parcurgerea elementelor de sub diagonala secundara
Indexat de la 0
for (int i = 0; i < n; i++) {
for (int j = i; j >= 0; j--) {
int x = mat[i][n - j - 1];
}
}
Parcurgerea elementelor în spirala
Indexat de la 1
for (int k = 1; k <= n / 2; k++) {
for (int j = k; j <= n - k + 1; j++) {
int x = a[k][j];
}
for (int i = k + 1; i <= n - k + 1; i++) {
int x = a[i][n - k + 1];
}
for (int j = n - k; j >= k; j--) {
int x = a[n - k + 1][j];
}
for (int i = n - k; i > k; i--) {
int x = a[i][k];
}
}