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;
    }
  • 相关阅读:
    为什么Redis比Memcached易
    请注意CSDN社区微通道,许多其他的精彩等着你
    采用ACE登录设施(一)HelloWorld
    AIX 7.1 install python
    spring mvc入门
    iOS开展——全球应对MotionEvent
    2015第35周日
    2015第35周六转相见恨晚的知识列表
    2015第35周五JavaScript变量
    2015第35周四
  • 原文地址:https://www.cnblogs.com/rever/p/4602030.html
Copyright © 2011-2022 走看看