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;
    }
  • 相关阅读:
    Tensorflow 2 flower_photos花卉数据集手动下载、离线安装、本地加载、快速读取
    [CC]ccHObject
    [CC]CC插件初探
    [g2o]一个备忘
    [PCL]keypoint
    [PCL]NDT点云匹配方法
    近邻搜索算法
    点云匹配和ICP算法概述
    [PCL]5 ICP算法进行点云匹配
    [PCL]4 PCL中图像匹配的几个类图
  • 原文地址:https://www.cnblogs.com/rever/p/4602030.html
Copyright © 2011-2022 走看看