概述
今天翻看以前的数据结构,练练基本功。这是局长呢鞍点算法。下面先来说说什么是矩阵的鞍点。在一个矩阵中,每一行的最大元素如果是该元素所在列中的最小元素,那么称该元素为矩阵的鞍点,当然,矩阵中不一定存在鞍点。
算法设计:
对二维数组遍历,拿每一行的第一个元素作为比较的元素,如果该元素大于这一行的所有元素,遍历这一元素所在列中的元素并比较,如果该元素小于所有元素,那么就找到了一个鞍点。这里涉及到二维数组的遍历自然用到双重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<<"行"<<col+1<<"列的"<<a[row][col]<<endl;
flag++;
}
}
}
}
if(flag==0){
cout<<"当前"<<i+1<<"行没有鞍点"<<endl;
}
else{
cout<<"有"<<flag<<"个鞍点"<<endl;
}
}
void main(){
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
find(a);
}
最后
以上就是健忘信封为你收集整理的矩阵鞍点算法的全部内容,希望文章能够帮你解决矩阵鞍点算法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复