6、“鞍点”问题

6、题目:“鞍点”问题

鞍点是数组某行中最大的数,同时是该数所在列的最小的数。找到鞍点并输出其行列标
思路:先找出一行中最大的数,再判断它是不是其所在列最小的数

#include<stdio.h>
int c;	//用全局变量c存储鞍点的列下标 
int search(int p[][4], int i);

int main(){
	int num1[3][4]={9,80,205,40,90,-60,96,1,210,-3,101,89};
	int num2[4][4]={9,80,205,40,90,-60,196,1,210,-3,101,89,45,54,156,7};
	int i, j;
	
	//调用函数查找num1的鞍点并输出行列标
	//put为0表示整个数组没有鞍点,为1表示有一个或多个鞍点即整个数组有鞍点
	int put=0;
	printf("num1:\n");
	for(i=0;i<3;i++){
		if(search(num1,i) == 1){
			put=1;
			printf("r=%d c=%d\n", i+1, c+1);
		}
	}
	if(put==0){
		printf("NO\n");
	}

	//调用函数查找num2的鞍点并输出行列标 
	printf("num2:\n");
	put=0;		
	for(i=0;i<4;i++){
		if(search(num2,i) == 1){
			put=1;
			printf("r=%d c=%d\n", i+1, c+1);
		}
	}
	if(put==0){
		printf("NO\n");
	}
		
	return 0;
} 

int search(int p[][4], int i){
	c=0;
	int j, find=0;
	
	//找出第i行最大的数 
	for(j=1;j<4;j++){
		if(p[i][c]<p[i][j]){
			c=j;
		}
	}
	
	//判断第i行最大的数是否为所在列最小的数 
	for(j=1;j<3;j++){
		if(p[i][c]>p[j][c]){
			find=0;
			break;
		}else{
			find=1;
		}
	}
	
	return find;
}
发布了16 篇原创文章 · 获赞 0 · 访问量 328

猜你喜欢

转载自blog.csdn.net/NAU_LHT/article/details/104145022