`
zy3381
  • 浏览: 157628 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

寻找鞍点(行最大,列最小)

 
阅读更多
#include<stdio.h>
void main()
{
    int a[3][3]= {
                  3,6,-1,
                  4,5,1,
                  8,7,3,
                  };
    int i,j,k;
    int mini,maxj,minIndexI,maxIndexJ;
    for(k=0; k<3; k++)
    {
        printf("找行最大:\n");
        maxj = a[k][0];
        maxIndexJ = k;
        for(j=0; j<3; j++)
        {
            if(maxj < a[k][j])
            {
                maxj = a[k][j];
                maxIndexJ = j;
            }
            printf("第%d行的最大下标:%d\n", k+1,maxIndexJ+1);
        }

        printf("找列最小:\n");
        mini = a[k][maxIndexJ];
        minIndexI = k;
        for(i=0; i<3; i++)
        {
            if(mini > a[i][maxIndexJ])
            {
                minIndexI = i;
            }
        }
        if(minIndexI == k)
        {
            printf("###########找到鞍点,行%d,列%d\n", minIndexI+1,maxIndexJ+1);
        }
        else
        {
            printf("第%d行没找到鞍点...\n", k+1);
        }
    }
}






闲着无聊,又温习了一遍....


#include<stdio.h>
#define N 4
#define M 4
void findSaddlePoint(int a[N][M], int n, int m)
{
    int i,j;
    int maxRow,maxRowX,minColumnY;
    for(i=0; i<n; i++)
    {
        //假定第i行的最大值在第0个位置
        maxRowX = 0;
        minColumnY = i;
        //记录这个最大值
        maxRow = a[i][maxRowX];
        //寻找行最大值以及行最大值所在的列
        for(j=1; j<m; j++)
        {
            if(a[i][j] > maxRow)
            {
                maxRow = a[i][j];
                maxRowX = j;
            }
        }

        //对于已找到的第i行的最大值,判断是否为所在列(maxRowX)的最小值
        for(j=0; j<n; j++)
        {
            //如果发现该列有更小的值,则不是鞍点
            if(a[j][maxRowX] < a[i][maxRowX])
            {
                minColumnY = j;
                break;
            }
        }
        //如果对该列遍历结束后发现该列的第i行仍然是最小值,则找到鞍点
        if(minColumnY == i)
        {
            printf("找到鞍点%d (y:%d, x:%d)", a[minColumnY][maxRowX], minColumnY+1, maxRowX+1);
        }
    }
}
void main()
{
    //有鞍点
    int a[N][M]= {
                  1,2,3,4,
                  3,4,5,6,
                  5,6,7,8,
                  6,7,8,9,
                  };
/*
    //无鞍点
    int a[N][M]= {
                  2,1,1,1,
                  1,2,3,4,
                  4,5,6,7,
                  9,8,7,6,
                  };
                  */
    findSaddlePoint(a, N, M);
}







分享到:
评论

相关推荐

    矩阵中寻找鞍点_C++_算法_矩阵鞍点算法_鞍点_

    鞍点是指在某一行中数值最大的元素,同时在对应的列中又是最小的元素。因此,鞍点在矩阵的这一行中凸显出来,就像骑手坐在马鞍上,故得此名。在本篇中,我们将深入探讨如何使用C++实现寻找矩阵鞍点的算法。 首先,...

    找出一个二维数组的鞍点,即该位置上的元素在该行上最大、在列上最小(也可能没有鞍点)。Java

    在编程领域,鞍点(Saddle Point)是指在一个矩阵中,某个元素在同一行中最大,同时在同一列中最小。这是一个相对特殊的位置,因为通常我们关注的是最大值或最小值,而鞍点则结合了这两种特性。在Java编程中,解决这...

    C语言 c++语言 二维数组找鞍点

    在这个特定的问题中,我们要讨论的是如何在C语言或C++中找到二维数组的“鞍点”,也就是数组中某个元素,其在所在行中最大,同时在所在列中最小。 首先,让我们了解鞍点的定义:在一个二维数组(矩阵)中,如果某...

    编写程序,找出一个二维数组的鞍点,即在当前行最大,当前列最小的元素,也可能没有鞍点。

    鞍点是矩阵中的一个特殊位置,它的值在当前行中是最大的,同时在当前列中是最小的。这种元素在某些数学问题和算法分析中具有重要的意义。在给定的题目中,我们需要编写一个程序来寻找二维数组的鞍点。 首先,让我们...

    鞍点查找(c++)

    鞍点在矩阵或数组中指的是一个特殊的值,它在该行上是最大的,在该列上是最小的。在二维数组中,鞍点的存在可能不是必然的,但它在一些数学问题和算法中具有重要意义。本话题将围绕C++实现鞍点查找这一主题进行详细...

    c语言找鞍点

    在C语言中,找鞍点是一个常见的问题,即在一个矩阵中找到一个元素,该元素在其所在行上最大,在其所在列上最小。以下是找鞍点的一种常用方法。 首先,需要了解鞍点的定义。鞍点是一个矩阵中的元素,该元素在其所在...

    求鞍点的程序代码

    这段代码虽然简洁,但效率并不高,因为它对每个元素都进行了两次全矩阵的比较(一次检查行最大,一次检查列最小)。在大型矩阵中,这可能导致性能问题。优化的方法可能包括使用优先队列或二分查找来加速最大值和...

    java矩阵找鞍点

    本话题聚焦于寻找矩阵中的“鞍点”,一个鞍点是指该元素在它所在的行中是最小的,同时在它所在的列中是最大的。这个概念在矩阵分析和某些算法中具有重要意义。 鞍点的查找可以分为以下几个步骤: 1. **定义矩阵**...

    C语言求鞍点

    在C语言中,鞍点是二维数组中的一种特殊位置,这里的元素在所在的行上是最大的,在所在的列上是最小的。这种概念常用于矩阵分析和数值计算中。本篇文章将详细探讨如何用C语言实现寻找二维数组的鞍点,以及相关的编程...

    java作业2.docx

    在这个例子中,第4行第1列的元素(值为8)就是一个鞍点,因为它在第4行中是最大的,在第1列中是最小的。 为了解决这个问题,我们可以采用以下算法步骤: 1. 初始化变量,如`m`、`n`和`t`。`m`用于记录当前行的最大...

    C++鞍点求解

    题目特别指出,矩阵中的任意两个数均不相等,这为寻找鞍点提供了一定的便利。 #### 输入输出格式 - **输入格式**:首先读入矩阵的行数m和列数n,随后输入m行,每行n个整数,构成一个m×n的矩阵。 - **输出格式**:...

    求一个矩阵鞍点程序代码C++

    在矩阵论中,鞍点是指这样一个元素:它在所在行中最大,在所在列中最小。具体来说,如果矩阵A中的元素\( A_{ij} \)满足以下两个条件: 1. 对于任意\( k \),有\( A_{ij} \geq A_{kj} \)(即\( A_{ij} \)是第\( i \)...

    20151910042-刘鹏-15-综合训练 - 求矩阵鞍点1

    鞍点是指在矩阵的一个元素,其值在所在行中是最小的,同时在所在列中是最大的。这是一个典型的线性代数概念,具有一定的算法设计挑战。 一、实验目标 1. **掌握求最大值和最小值的方法**:这是编程中基本的数据...

    基于C++的鞍点的判断

    在填充完数组后,我们需要遍历数组来寻找鞍点。遍历过程应包括两个步骤:首先,找到每一行的最大值;然后,在这些行最大值中找出最小的一个,这个最小的行最大值就是鞍点。我们可以通过嵌套循环来实现这个过程: ``...

    c语言寻找马鞍点

    1. 马鞍点定义:在矩阵中,如果存在一个元素它在其所在行是所有元素中最小的,并且在它所在列是所有元素中最大的,则称该元素为矩阵的马鞍点。 2. 矩阵表示:在C语言中,矩阵可以通过二维数组来表示。本例代码中...

    Java实验--找鞍点编程资料

    鞍点是指在二维数组(或矩阵)中找到的一个特殊位置上的元素,该元素在其所在行中最大,在其所在列中最小。值得注意的是,并非所有二维数组都存在鞍点,有时候可能找不到符合条件的元素。 #### 实验目标 1. **理解...

    Java实验--找鞍点.docx

    鞍点是指在一个矩阵中,某个元素在所在的行中是最大的,在其所在的列中是最小的。这种练习不仅能够增强学生对Java语言的理解,还能提升他们在数据结构与算法方面的能力。 #### 二、实验内容概述 1. **明确鞍点的...

    数据结构试验之排序鞍点及顺序表

    鞍点的查找通常与排序相结合,例如,先对行进行排序,然后在每行中寻找列的最大值,从而找到鞍点。在C语言中实现这个算法,需要掌握数组的操作和条件判断技巧。 接下来,我们关注的是顺序表。顺序表是一种简单的...

    利用C++实现矩阵的相加/相称/转置/求鞍点

    鞍点是指在一个矩阵中,该元素在同一行中是最大的,而在同一列中是最小的。在提供的代码中,寻找3x4矩阵A的鞍点。为了找到鞍点,我们需要遍历矩阵的每个元素,同时维护行的最大值和列的最小值。如果某个元素既是所在...

    数据结构课程实验一java程序的设计基础.doc

    2. 寻找二维数组的鞍点:鞍点是指元素在所在行中最大,且在所在列中最小的数值。源代码首先使用随机数生成二维数组,然后通过两层嵌套循环找到鞍点。外层循环遍历每一行,内层循环找到每行的最大值,再通过另一层...

Global site tag (gtag.js) - Google Analytics