求矩阵鞍点
矩阵中比上下两个数都大且比左右两个数都小的数或者比上下两个数都小且比左右两个数都大的数叫做矩阵的鞍点。
输入m n
随后输入m行,每行n列,输入矩阵相对应的值。
代码:
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
int main(){
vector<vector<int>>a;
int m,n;
scanf("%d",&m);
scanf("%d",&n);
for(int i=0;i<m;i++){
vector<int>b;
for(int j=0;j<n;j++){
int number;
scanf("%d",&number);
b.push_back(number);
}
a.push_back(b);
}
int sum=0;
for(int i=1;i<m-1;i++){
for(int j=1;j<n-1;j++){
if(((a[i][j]>a[i-1][j])&&(a[i][j]>a[i+1][j])&&(a[i][j]<a[i][j-1])&&(a[i][j]<a[i][j+1]))||((a[i][j]<a[i-1][j])&&(a[i][j]<a[i+1][j])&&(a[i][j]>a[i][j-1])&&(a[i][j]>a[i][j+1]))){
sum++;
}
}
}
printf("%d",sum);
}