⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ma.c

📁 耿国华高教出版社的《数据结构》的光盘(C语言)
💻 C
字号:
/*如果矩阵A中存在这样的一个元素A[i][j]满足条件:A[i][j]是第i行中值最小的元素,且又是第j列中值最大的
元素,则称之为该矩阵的一个马鞍点。编写一个函数计算出1×n的矩阵A的所有马鞍点。
算法思想:依题意,先求出每行的最小值元素,放入min[m]之中,再求出每列的最大值元素,放入max[n]之中,若某
元素既在min[i]中,又在max[j]中,则该元素A[i][j]便是马鞍点,找出所有这样的元素,即找到了所有马鞍点。因此,
实现本题功能的程序如下:*/
#include <stdio.h>
#define m 3
#define n 3

void minmax(int a[m][n])
{
	int i1,j,have=0;
	int min[m],max[n];
	for(i1=0;i1<m;i1++)/*计算出每行的最小值元素,放入min[m]之中*/
	{
		min[i1]=a[i1][0];
		for(j=1;j<n;j++)
			if(a[i1][j]<min[i1]) min[i1]=a[i1][j];
	}
	for(j=0;j<n;j++)/*计算出每列的最大值元素,放入max[n]之中*/
	{
		max[j]=a[0][j];
		for(i1=1;i1<m;i1++)
			if(a[i1][j]>max [j]) max[j]=a[i1][j];
	}
	for(i1=0;i1<m;i1++)
		for(j=0;j<n;j++)
			if(min[i1]==max[j])
			{
				printf("(%d,%d):%d\n",i1,j,a[i1][j]);
				have=1; 
			}
			if(!have) printf("没有鞍点\n");
} 

void main()
{
	int a[m][n];
	int i,j; 
	printf("请输入一个数组\n"); 
	for(i=0;i<m;i++) 
		for(j=0;j<n;j++) 
			scanf("%d",&a[i][j]); 
	minmax(a);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -