一个数是它所在行和所在列的最小值,则这个数即为要找的数。要找出矩阵中一共有多少个这样的数。可以先找出每一行和每一列的最小值,如果两者都为a[i][j],则a[i][j]即为一个要找的数,res++
- #include<iostream>
- #include<cstring>
- #include<vector>
- #include<string>
- #include<algorithm>
-
- using namespace std;
-
- int a[1005][1005];
- int h[1005], l[1005];
- int res;
-
- int main() {
-
- int n, m;
- scanf("%d%d", &n, &m);
-
- memset(h, 0x3f, sizeof h);
- memset(l, 0x3f, sizeof l);
-
- for(int i = 0; i < n; i ++) {
- for(int j = 0; j < m; j ++) {
- scanf("%d", &a[i][j]);
- if(h[i] > a[i][j]) h[i] = a[i][j];
- if(l[j] > a[i][j]) l[j] = a[i][j];
- }
- }
-
- for(int i = 0; i < n; i ++) {
- for(int j = 0; j < m; j ++) {
- if(a[i][j] == h[i] && a[i][j] == l[j])
- res ++;
- }
- }
-
- cout << res;
-
- return 0;
- }