今天翻看以前的数据结构,练练基本功。这是局长呢鞍点算法。下面先来说说什么是矩阵的鞍点。在一个矩阵中,每一行的最大元素如果是该元素所在列中的最小元素,那么称该元素为矩阵的鞍点,当然,矩阵中不一定存在鞍点。
算法设计:
对二维数组遍历,拿每一行的第一个元素作为比较的元素,如果该元素大于这一行的所有元素,遍历这一元素所在列中的元素并比较,如果该元素小于所有元素,那么就找到了一个鞍点。这里涉及到二维数组的遍历自然用到双重for循环了。
#include<iostream>
using namespace std;
#define m 3
#define n 3
int a[3][3]={
{1,1,8},
{3,1,7},
{1,4,6}};
int i,j;
int temp1=0;
int temp2=0;
int row,col;
int k;
int flag;
void find(int a[m][n]){
for(i=0;i<m;i++){
for(j=0;j<n;j++){
if(a[i][0]<a[i][j]){//寻找行中的最大值
temp1=a[i][j];//将两两比较中的最大值赋给中间变量temp
row=i;//将最大值的行号和列号记录
col=j;
}
}
for(k=0;k<m;k++){
if(a[k][col]<temp1){
break;
}
else{
if(k==m-1){//结束判断条件
cout<<"当前鞍点是"<<row+1<<"