题目:
AC代码:
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
bool isPrime(int num) {
if (num <= 1) return false;
for (int i = 2; i <= sqrt(num); i++) {
if (num % i == 0) return false;
}
return true;
}
bool isValidPosition(const vector<vector<int>>& matrix, int i, int j, int n, int m) {
if (i < 0 || i >= n || j < 0 || j >= m) return false;
if (!isPrime(matrix[i][j])) return false;
vector<pair<int, int>> directions = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
for (auto& dir : directions) {
int ni = i + dir.first, nj = j + dir.second;
if (ni >= 0 && ni < n && nj >= 0 && nj < m && matrix[ni][nj] % 2 == 0) {
} else {
return false;
}
}
return true;
}
int main() {
int n, m;
cin >> n >> m;
vector<vector<int>> matrix(n, vector<int>(m));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> matrix[i][j];
}
}
int maxPrime = -1;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (isValidPosition(matrix, i, j, n, m) && matrix[i][j] > maxPrime) {
maxPrime = matrix[i][j];
}
}
}
cout << maxPrime << endl;
return 0;
}
合格证: