一、题目
输入1个正整数n(1<=n<=6)和n阶方阵a中的元素,假设方阵a最多有1个鞍点,如果找到a的鞍点,就输出其下标,否则,输出“NO”。鞍点的元素值在该行上最大,在该列上最小。试编写相应程序。
二、输入输出示例:(下划线代表输入的内容)
示例1:
4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9
a[2][1]=6
示例2:
2
1 7
4 1
NO
三、思路:首先找出第1行的最大值,然后判断该值在所在列是否最小,若是,则该值为鞍点并跳出循环;若否,则按照该思路开始遍历第2行,第3行...若遍历完最后一行仍然没有找到鞍点,则无鞍点。
四、代码实现:(IDE为visual studio 2019)
#include <stdio.h>
int main()
{
int n, i, j, k, col, flag;
int a[6][6];
scanf_s("%d", &n);
//给二维数组赋值
for ( i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
scanf_s("%d", &a[i][j]);
}
}
//开始找鞍点
for ( i = 0; i < n; i++)
{
col = 0;
flag = 1; //假设存在鞍点
//找出第i行的最大值,即a[i][col]
for ( j = 0; j < n; j++)
{
if (a[i][j] > a[i][col]) {
col = j;
}
}
//判断a[i][col]是否是该列最小
fo

本文介绍如何在C语言中解决寻找方阵鞍点的问题。鞍点定义为元素值在行上最大,列上最小。文章提供了一种思路,即先找到第一行的最大值,再判断它在列上的位置,接着遍历后续行,直至找到鞍点或确认不存在鞍点。同时还给出了在Visual Studio 2019环境下编写的代码示例。
最低0.47元/天 解锁文章
300

被折叠的 条评论
为什么被折叠?



