求鞍点,就是行中的最大值,列中的最小值。
代码
//程序名:二维数组求最大最小值,鞍点。
//版本jojo1.0
//功能: 在二维矩阵中,一个元素既是它所在行中的最大值,也是它所在列中的最小值,该点叫做鞍点。编程自动生成并输出 3Ⅹ3 二维矩阵,
//要求各元素值的范围为 1~99。输出全部元素中的最大值和最小值、鞍点值,如果没有鞍点,重新构造一个二维矩阵,直到第一次生成鞍点为止。
#include
#include
#include
#include
main()
{
int i,j,m=0,n=0,k=0,max=0,min=0;//定义行,列,最大值,最小值变量。
int a[i][j];//定义数组
printf("请输入行,列");
scanf("%d%d",&m,&n);
srand(time(NULL));//定义种子函数
look:for(i=0;i{
for(j=0;j{
a[i][j]=abs(rand()%100+1);//随机输出1-100的数
max=(maxmin=(minprintf("a[%d][%d]=%dt",i,j,a[i][j]);//输出数组
}
printf("n");
}
printf("最大值为%dn最小值为%dn",max,min);//输出最大,最小值。
int q=0,w=0,l=0,max1,min1;//定义鞍点坐标
for(i=0;i{
max1=a[i][0];w=i;q=1;//定义MAX为该行中的最大值
for(j=0;j{
if(max1}
min1=1;
for(k=0;k{
if(max1>a[k][q]){min1=0;break;}
}
if(min1==1){printf("鞍点为a[%d][%d]=%d",w,q,max1);l=l+1;}
}
if(l==0){goto look;}
else{return 0;}
}
为啥程序输出的有时候是对的,又时候是错的,输出的是列中的最大值,行中的最小值,而且坐标也不对。