每日一道算法题之计算鞍点
- 一、题目描述
- 二、思路
- 三、C++代码
一、题目描述
题目来源:洛谷
给定一个 55的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。
C++程序要求输入输出格式如下:
输入格式
输入包含一个 5 行 5 列的矩阵。
输出格式
如果存在鞍点,输出鞍点所在的行、列及其值,如果不存在,输出 not found。
示例如下:
输入:
11 3 5 6 9
12 4 7 8 10
10 5 6 9 11
8 6 4 7 2
15 10 11 20 25
输出:4 1 8
二、思路
我的思路是采用暴力解,用三个数组,第一个二维数组存储输入的矩阵,第二数组存储每一行最大的数,第三个数组存储每一列最小的数,然后再去对比第三个数组里的值是否出现在第二个数组中,出现则符合题意条件,进行输出,否则输出not found。
三、C++代码
#include
using namespace std;
//计算鞍点
int main(){
int a[5][5];
for(int i=0;i5;i++){
for(int j=0;j5;j++){
cin>>a[i][j];
}
}
int max=INT_MIN,min=INT_MAX;
int flag=0;
int b[5];
int c[5];
for(int i=0;i5;i++){
for(int j=0;j5;j++){
if(a[i][j]>max){
max=a[i][j];
}
}
b[i]=max;
max=0;
}
for(int i=0;i5;i++){
for(int j=0;j5;服务器托管网j++){
if(a[j][i]min){
min=a[j][i];
}
}
c[i]=min;
min=300;
}
for(int i=0;i5;i++){
for(int j=0;j5;j++){
if(c[j]==b[i]){
couti+1" "j+1" "b[i];
flag=1;
}
}
}
if(flag==0){
cout"not服务器托管网 found";
}
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net