【HZNUOJ】第二章pro【美丽杭州】苏轼寻宝
题目描述:给你一个
n
×
m
n\times m
n×m的矩阵,宝藏是所在行同最小且所在列最大的数 即找到一个元素
a
i
j
a_{ij}
aij使得
a
i
1
≥
a
i
j
,
a
i
2
≥
a
i
j
,
…
a
i
m
≥
a
i
j
a_{i1}\geq a_{ij} ,a_{i2}\geq a_{ij}, \dots a_{im}\geq a_{ij}
ai1≥aij,ai2≥aij,…aim≥aij
a 1 j ≤ a i j , a 2 j ≤ a i j , … a n j ≤ a i j a_{1j}\leq a_{ij}, a_{2j} \leq a_{ij}, \dots a_{nj} \leq a_{ij} a1j≤aij,a2j≤aij,…anj≤aij
求宝藏坐标
思路:遍历矩阵中的每一个元素,判断是否合法
代码:
#include <bits/stdc++.h>
using namespace std;
#define int long long int
#define Paddi ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
const int N = 110;
int maze[N][N];
signed main()
{
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
cin >> maze[i][j];
}
int x, y;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
bool f1 = true;
bool f2 = true;
for (int k = 1; k <= n; k++)
{
if (maze[k][j] > maze[i][j])
f1 = false;
}
for (int k = 1; k <= m; k++)
{
if (maze[i][k] < maze[i][j])
f2 = false;
}
if (f1 and f2)
x = j, y = i;
}
}
cout << "(" << y << "," << x << ")" << endl;
return 0;
}