计算鞍点

本小妞迷上赌 提交于 2020-03-17 02:21:53

总时间限制:
1000ms
内存限制:
65536kB

描述

给定一个5*5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。
鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。
例如:在下面的例子中(第4行第1列的元素就是鞍点,值为8 )。
11 3 5 6 9
12 4 7 8 10
10 5 6 9 11
8 6 4 7 2
15 10 11 20 25

输入
输入包含一个5行5列的矩阵
输出
如果存在鞍点,输出鞍点所在的行、列及其值,如果不存在,输出"not found"
样例输入

11 3 5 6 9
12 4 7 8 10
10 5 6 9 11
8  6 4 7 2
15 10 11 20 25

样例输出

4 1 8
#include <stdio.h>
#define num 5
int main()
{
	int arr[num][num];
	int index[5];  //  记录每行最大的索引  索引代表行号   数值代表列号 
	int i,j,max,min,state,l;

	for(i = 0;i<num;i++)
		for(j = 0;j<num;j++)
			scanf("%d",arr[i]+j);
	
	for(i = 0;i<num;i++){   // 定行扫列  找行最大 
		max = arr[i][0];
		index[i] = 0;
		for(j = 1;j<num;j++){
			if(arr[i][j]>max){
				max = arr[i][j];
				index[i] = j;
			}
		}
	}
	
	state = 0; //默认是没有鞍点的
	
	for(i = 0;i<num;i++){ // 定列扫行  找列最小 
		int p = 1;
		l = index[i];
		min = arr[i][l];
		for(j = 0;j<num;j++){
			if(arr[j][l]<min){
				p = 0;
				break;
			}
		}
		if(p){
			printf("%d %d %d",i+1,l+1,arr[i][l]);
			state = 1;
		}
	}
	if(!state)printf("not found");
	
	return 0;
} 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!