求一个矩阵的马鞍点

目的:掌握数组算法设计

内容:如果矩阵A中存在一个元素满足以下条件,即A[i][j]是第i行中最小的元素,且又是第j列最大的元素,则称之为一个马鞍点,设计一个程序exp6-4.cpp计算m*n的矩阵的所有马鞍点。

#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
int a[100][100];
int maxx[100],minn[100];//maxx数组存每一列中最大元素的行下标,minn存每一行最小元素的列下标。
int main()
{
    int m,n,i,j;
    cin>>m>>n;
    for(i=0;i<m;i++)
        for(j=0;j<n;j++)
            cin>>a[i][j];
    for(i=0;i<m;i++){
        minn[i]=0;
        for(j=1;j<n;j++)
            minn[i]=(a[i][j]<a[i][minn[i]])?j:minn[i];
    }
    for(i=0;i<n;i++){
        maxx[i]=0;
        for(j=1;j<m;j++)
            maxx[i]=a[j][i]>a[maxx[i]][i]?j:maxx[i];
    }
    for(i=0;i<m;i++){
        if(minn[maxx[i]]==maxx[i])
            cout<<maxx[i]<<" "<<i<<"ÊÇÂí°°µã¡£"<<endl;
    }
    return 0;
}

ps:代码中汉字出现乱码了。。

猜你喜欢

转载自blog.csdn.net/qq_15742375/article/details/84281653