zoukankan      html  css  js  c++  java
  • C++求矩阵的鞍点

    矩阵的鞍点就是指它在本行中的值最大,在本列中的值最小。

    求解思路:

    1. 求出每行的最大值MaxRow以及每列的最小值MinColumn
    2. 保存行最大值的位置和列最小值的位置
    3. 如果行最大值得位置和列最小值的相等则输出此鞍点(如果没有鞍点则输出无)

    代码如下:

    #include <iostream>
    #include<Cmath>
    using namespace std;
    int main(){
      int n,m;
      cin>>n>>m;
      int MaxRow[1000]={0};    //保存行最大值的行位置 
      int MaxColumn[1000]={0};  //保存行最大值的列位置 
      int MinRow[1000]={0};     //保存列最小值的行位置 
      int MinColumn[1000]={0};  //保存列最小值的列位置
      int RowMax[1000]={0};   //行最大值 
      int ColumnMin[1000]={0};  //列最大值 
      
        int a[n][m];
        for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
        {
          cin>>a[i][j];
        }
        
      int count=0;
        for(int i=0;i<1000;i++)
          ColumnMin[i]=9999999;
    
        
       for(int i=0;i<n;i++) {
        for(int j=0;j<m;j++){
           if(a[i][j]>RowMax[i]){
               RowMax[i]=a[i][j];
               MaxRow[i]=i;
               MaxColumn[i]=j;
             }
              if(a[j][i]<ColumnMin[i])
           {
             ColumnMin[i]=a[j][i];
             MinColumn[i]=i;
             MinRow[i]=j;
           }
           }
         }
       for(int i=0;i<n;i++)
       {
        for(int j=0;j<m;j++)
        {
       
        if (MaxRow[i]==MinRow[j]&&MaxColumn[i]==MinColumn[j])
        {
          cout<<"鞍点在第"<<MaxRow[i]+1<<"行,第"<<MaxColumn[i]+1<<"列的"<<a[MaxRow[i]][MaxColumn[i]]<<endl; 
          count++;
        }
       }
     }
       if(count==0)
       {
        cout<<""<<endl;
       }
        
        return 0;
    }
  • 相关阅读:
    虚拟主机支持apk
    pc显示,手机隐藏
    manjaro个人配置
    docker-compose部署elk
    docker-compose部署zk和kafka
    docker-compose部署redis-cluster
    ActiveMQ与RocketMQ对比
    dropbox离线安装包--需FQ
    C++实现中缀表达式转前、后缀
    运算符优先级
  • 原文地址:https://www.cnblogs.com/rever/p/4602030.html
Copyright © 2011-2022 走看看