c 语言找鞍点pta
时间: 2025-06-22 15:36:38 浏览: 17
### C语言实现寻找矩阵鞍点
在C语言中,可以通过双重循环遍历整个二维数组来找到鞍点。具体来说:
对于给定的n×m矩阵a[n][m],需要先定义两个辅助函数用于判断某位置(i, j)是否满足鞍点条件。
- 行最小值检查:确认当前列j中的元素a[i][j]是否为第i行上的最小值。
- 列最大值检查:验证该行i里的数值a[i][j]是不是所在列的最大数。
一旦发现某个元素既是其所在行的最小值又是它所属列的最大值,则此元素即为所求鞍点;反之则输出“NONE”。
下面是完整的程序代码示例[^1]:
```c
#include <stdio.h>
#define MAXN 10 // 假设行列不超过10
int main() {
int n, m;
scanf("%d%d", &n, &m);
int a[MAXN][MAXN];
for (int i = 0; i < n; ++i)
for (int j = 0; j < m; ++j)
scanf("%d", &a[i][j]);
int found = 0;
for (int i = 0; !found && i < n; ++i){
int minIndex = 0;
// 找到每一行里最小的那个数字所在的索引minIndex
for(int k=1;k<m;++k){
if(a[i][k]<a[i][minIndex]){
minIndex=k;
}
}
bool isSaddle=true;
// 验证这个最小值是否也是这一列里面最大的那个
for(int p=0;p<n&&isSaddle;++p){
if(a[p][minIndex]>a[i][minIndex]){// 如果不是就跳过这次尝试
isSaddle=false;
}
}
if(isSaddle){ // 只有当上述两步都成立的时候才打印出来并结束查找过程
printf("%d %d\n", i,minIndex );
found=1;
}
}
if (!found) {printf("NONE");}
return 0;
}
```
阅读全文
相关推荐

















