PTA.C语言.找鞍点

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

输入格式:

输入4行4列的整型二维数组。

输出格式:

若有鞍点,输入鞍点以及其位置;若没有鞍点,输出“It is not exist!”。

输入样例1:

在这里给出一组输入。例如:

2 3 9 5
6 7 8 3
0 5 7 5
2 1 8 3

输出样例1:

在这里给出相应的输出。例如:

a[2][2]=7

输入样例2:

在这里给出一组输入。例如:

2 3 9 5
6 7 8 3
1 5 6 7
2 1 8 3

输出样例2:

在这里给出相应的输出。例如:

It is not exist!
#include "stdio.h"
int main() {
	int a[4][4];
	int i, j;
	//键盘输入四行四列的数组
	for (i = 0;i < 4;i++) {
		for (j = 0;j < 4;j++) {
			scanf("%d",&a[i][j]);
		}
	}
	//遍历
	int max, min,k,flag =0;
	for (i = 0;i < 4;i++) {
		//找此i行最大,即比较列
		max = 0;
		for (j = 0;j < 4;j++) {
			if (a[i][max] <= a[i][j]) {
				max = j;
			}
		}
		
		//从该max列找每行中最小的,max列的min行和i行比较(因为max是从i中找到的,所以最小行应 
        //    该是i)
        min = 0;
		for (k = 0;k < 4;k++) {
			if (a[min][max] >= a[k][max]) {
				min = k;
			}
		}
		//找到了
		if (min == i) {
			flag = 1;
			break;
		}
	}
	if (flag)
		printf("a[%d][%d]=%d", min, max, a[min][max]);
	else
		printf("It is not exist!");
}

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
鞍点矩阵中一个元素,它在该中是最大值,在该中是最小值。以下是用 C 语言求解鞍点的一种基本方法: 1. 定义一个二维数组并输入矩阵元素。 2. 使用两个 for 循环分别遍历矩阵的。 3. 在循环中到该中的最大值,并记录其下标。 4. 在循环中到该中的最小值,并记录其下标。 5. 如果最大值所在的下标等于最小值所在的下标,则该元素为鞍点。 6. 输出所有鞍点的位置。 以下是一个简单的 C 语言程序来实现上述步骤: ```c #include <stdio.h> #define ROWS 3 #define COLS 3 int main() { int matrix[ROWS][COLS]; int rowMax, colMin, isSaddlePoint; int i, j, k; // 输入矩阵元素 printf("Enter matrix elements:\n"); for (i = 0; i < ROWS; i++) { for (j = 0; j < COLS; j++) { scanf("%d", &matrix[i][j]); } } // 寻鞍点 for (i = 0; i < ROWS; i++) { rowMax = matrix[i][0]; k = 0; for (j = 1; j < COLS; j++) { if (matrix[i][j] > rowMax) { rowMax = matrix[i][j]; k = j; } } colMin = matrix[0][k]; for (j = 1; j < ROWS; j++) { if (matrix[j][k] < colMin) { colMin = matrix[j][k]; } } if (rowMax == colMin) { printf("Saddle point found at (%d, %d)\n", i, k); isSaddlePoint = 1; } } if (!isSaddlePoint) { printf("No saddle point found.\n"); } return 0; } ``` 注意,在上面的程序中,我们假设矩阵的大小为 3x3。如果你想处理更大的矩阵,你需要相应地更改程序中的的值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值