求三行三列矩阵的鞍点

【问题描述】在矩阵中,一个数在所在行中是最大值,在所在列中是最小值,则被称为鞍点。任意输入一个3行3列矩阵,请设计程序输出其鞍点。

【输入形式】每行3个数,输入3列
【输出形式】输出所有鞍点;如果没有鞍点,输出“No”
【样例输入1】

7 8 9

4 5 10

3 2 11 
【样例输出1】[0][2],9

【样例输入2】

3 3 2

4 6 8

5 7 9 
【样例输出2】

[0][0],3

[0][1],3

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
/*【问题描述】在矩阵中,一个数在所在行中是最大值,在所在列中是最小值,则被称为鞍点。
任意输入一个3行3列矩阵,请设计程序输出其鞍点。
【输入形式】每行3个数,输入3列
【输出形式】输出所有鞍点;如果没有鞍点,输出“No”*/
void find(int a[3][3], int i, int index)
{
	int flag = 0;
	int min = a[i][index];
	for (int m = 0; m < 3; m++)
	{
		if (a[m][index] < min)
		{
			flag = 1;
			break;
		}
	}
	if (flag == 0)
	{
		printf("[%d][%d] %d\n", i, index, a[i][index]);
	}
}
int main()
{
	int a[3][3];
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			scanf("%d", &a[i][j]);
    	}
	}
	for (int i = 0; i < 3; i++)
	{
		int max = a[i][0];
		int index = 0;
		//找出一行最大值,并保存下标
		for (int j = 1; j < 3; j++)
		{
			if (a[i][j] > max)
			{
				index = j;
				max = a[i][j];
			}
		}
		//判断是否是该列最小值,即判断鞍点
		find(a,i,index);
		//特殊情况,一行最大值不止一个
		for (int j = 1; j < 3; j++)
		{
			if (a[i][j] == max && j != index)
			{
				index = j;
			}
		}
		find(a, i, index);
	}
	return 0;
}

新手小白,通过csdn记录自己刷过的易错题~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值