Đăng nhập để hỏi chi tiết


Một ô là điểm yên ngựa nếu giá trị của nó nhỏ nhất trên hàng và đồng thời lớn nhất trên cột. Hãy liệt kê tất cả các điểm yên ngựa theo thứ tự hàng rồi cột.
Dữ liệu: Dòng đầu chứa m và n; tiếp theo là ma trận.
Kết quả: Dòng đầu in số điểm yên ngựa. Mỗi dòng tiếp theo in chỉ số hàng và cột của một điểm. Nếu không có, chỉ in 0.
Giới hạn: 1 ≤ m, n ≤ 500; |aᵢⱼ| ≤ 10⁹.
Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
#include <bits/stdc++.h>
using namespace std;
int main() {
int m, n;
cin >> m >> n;
int a[500][500];
int hang[500], cot[500];
for (int i = 0; i < m; i++) {
hang[i] = 1e9;
for (int j = 0; j < n; j++) {
cin >> a[i][j];
hang[i] = min(hang[i], a[i][j]);
}
}
for (int j = 0; j < n; j++) {
cot[j] = -1e9;
for (int i = 0; i < m; i++)
cot[j] = max(cot[j], a[i][j]);
}
int dem = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (a[i][j] == hang[i] && a[i][j] == cot[j])
dem++;
}
}
cout << dem << '\n';
if (dem == 0) {
return 0;
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (a[i][j] == hang[i] && a[i][j] == cot[j])
cout << i + 1 << ' ' << j + 1 << '\n';
}
}
}Hãy giúp mọi người biết câu trả lời này thế nào?
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int n, m;
cin >> n >> m;
vector<vector<int>> a(n, vector<int>(m));
vector<int> minR(n, 2e9);
vector<int> maxC(m, -2e9);
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> a[i][j];
minR[i] = min(minR[i], a[i][j]);
maxC[j] = max(maxC[j], a[i][j]);
}
}
vector<pair<int, int>> kq;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (a[i][j] == minR[i] && a[i][j] == maxC[j]) {
kq.push_back({i + 1, j + 1});
}
}
}
if (kq.size() == 0) {
cout << 0;
} else {
cout << kq.size() << "\n";
for (int i = 0; i < kq.size(); i++) {
cout << kq[i].first << " " << kq[i].second << "\n";
}
}
return 0;
}
Hãy giúp mọi người biết câu trả lời này thế nào?
Bảng tin