#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++实现寻找矩阵鞍点的算法。 首先,...
在编程领域,鞍点(Saddle Point)是指在一个矩阵中,某个元素在同一行中最大,同时在同一列中最小。这是一个相对特殊的位置,因为通常我们关注的是最大值或最小值,而鞍点则结合了这两种特性。在Java编程中,解决这...
在这个特定的问题中,我们要讨论的是如何在C语言或C++中找到二维数组的“鞍点”,也就是数组中某个元素,其在所在行中最大,同时在所在列中最小。 首先,让我们了解鞍点的定义:在一个二维数组(矩阵)中,如果某...
鞍点是矩阵中的一个特殊位置,它的值在当前行中是最大的,同时在当前列中是最小的。这种元素在某些数学问题和算法分析中具有重要的意义。在给定的题目中,我们需要编写一个程序来寻找二维数组的鞍点。 首先,让我们...
鞍点在矩阵或数组中指的是一个特殊的值,它在该行上是最大的,在该列上是最小的。在二维数组中,鞍点的存在可能不是必然的,但它在一些数学问题和算法中具有重要意义。本话题将围绕C++实现鞍点查找这一主题进行详细...
在C语言中,找鞍点是一个常见的问题,即在一个矩阵中找到一个元素,该元素在其所在行上最大,在其所在列上最小。以下是找鞍点的一种常用方法。 首先,需要了解鞍点的定义。鞍点是一个矩阵中的元素,该元素在其所在...
这段代码虽然简洁,但效率并不高,因为它对每个元素都进行了两次全矩阵的比较(一次检查行最大,一次检查列最小)。在大型矩阵中,这可能导致性能问题。优化的方法可能包括使用优先队列或二分查找来加速最大值和...
本话题聚焦于寻找矩阵中的“鞍点”,一个鞍点是指该元素在它所在的行中是最小的,同时在它所在的列中是最大的。这个概念在矩阵分析和某些算法中具有重要意义。 鞍点的查找可以分为以下几个步骤: 1. **定义矩阵**...
在C语言中,鞍点是二维数组中的一种特殊位置,这里的元素在所在的行上是最大的,在所在的列上是最小的。这种概念常用于矩阵分析和数值计算中。本篇文章将详细探讨如何用C语言实现寻找二维数组的鞍点,以及相关的编程...
在这个例子中,第4行第1列的元素(值为8)就是一个鞍点,因为它在第4行中是最大的,在第1列中是最小的。 为了解决这个问题,我们可以采用以下算法步骤: 1. 初始化变量,如`m`、`n`和`t`。`m`用于记录当前行的最大...
题目特别指出,矩阵中的任意两个数均不相等,这为寻找鞍点提供了一定的便利。 #### 输入输出格式 - **输入格式**:首先读入矩阵的行数m和列数n,随后输入m行,每行n个整数,构成一个m×n的矩阵。 - **输出格式**:...
在矩阵论中,鞍点是指这样一个元素:它在所在行中最大,在所在列中最小。具体来说,如果矩阵A中的元素\( A_{ij} \)满足以下两个条件: 1. 对于任意\( k \),有\( A_{ij} \geq A_{kj} \)(即\( A_{ij} \)是第\( i \)...
鞍点是指在矩阵的一个元素,其值在所在行中是最小的,同时在所在列中是最大的。这是一个典型的线性代数概念,具有一定的算法设计挑战。 一、实验目标 1. **掌握求最大值和最小值的方法**:这是编程中基本的数据...
在填充完数组后,我们需要遍历数组来寻找鞍点。遍历过程应包括两个步骤:首先,找到每一行的最大值;然后,在这些行最大值中找出最小的一个,这个最小的行最大值就是鞍点。我们可以通过嵌套循环来实现这个过程: ``...
1. 马鞍点定义:在矩阵中,如果存在一个元素它在其所在行是所有元素中最小的,并且在它所在列是所有元素中最大的,则称该元素为矩阵的马鞍点。 2. 矩阵表示:在C语言中,矩阵可以通过二维数组来表示。本例代码中...
鞍点是指在二维数组(或矩阵)中找到的一个特殊位置上的元素,该元素在其所在行中最大,在其所在列中最小。值得注意的是,并非所有二维数组都存在鞍点,有时候可能找不到符合条件的元素。 #### 实验目标 1. **理解...
鞍点是指在一个矩阵中,某个元素在所在的行中是最大的,在其所在的列中是最小的。这种练习不仅能够增强学生对Java语言的理解,还能提升他们在数据结构与算法方面的能力。 #### 二、实验内容概述 1. **明确鞍点的...
鞍点的查找通常与排序相结合,例如,先对行进行排序,然后在每行中寻找列的最大值,从而找到鞍点。在C语言中实现这个算法,需要掌握数组的操作和条件判断技巧。 接下来,我们关注的是顺序表。顺序表是一种简单的...
鞍点是指在一个矩阵中,该元素在同一行中是最大的,而在同一列中是最小的。在提供的代码中,寻找3x4矩阵A的鞍点。为了找到鞍点,我们需要遍历矩阵的每个元素,同时维护行的最大值和列的最小值。如果某个元素既是所在...
2. 寻找二维数组的鞍点:鞍点是指元素在所在行中最大,且在所在列中最小的数值。源代码首先使用随机数生成二维数组,然后通过两层嵌套循环找到鞍点。外层循环遍历每一行,内层循环找到每行的最大值,再通过另一层...