新手,两道鞍点题,求大神指导

 1.第一道是求整个数组中最小的鞍点,我想问的是在我比较先定义的最小值与别的比较时,为什么只能用min
直接比较,不能写类似与a[i][n]
int main()
{
int a[3][3]={{10,2,3},{4,5,6},{7,8,9}},i,n,min;
for(i=0;i<=2;i++)
{
 for(n=0;n<=2;n++)
 {
  printf("%d",a[i][n]);
 }
 printf("\n");
}
min=a[0][0];
for(i=0;i<=2;i++)
 for(n=0;n<=2;n++)
if(a[i][n]{
   min=a[i][n];
 }
 printf("%d",min);
 return 0;
}
2.这是一道求二维数组中,它在列是最小的,在行是最大的一道题。然后我再敲比较大小那部分,一直出不来结果,不知道要怎么写那部分,求指导。
#include
int main()
{
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}},i,n,min,max;
for(i=0;i<=2;i++)
{
 for(n=0;n<=2;n++)
 {
  printf("%d",a[i][n]);
 }
 printf("\n");
}
min=a[0][0];
for(i=0;i<=2;i++)
{
 for(n=0;n<=2;n++)
 {
               if(a[i][0]    min=a[i][0];
            max=min;
 if(max>a[i][n])
 printf("%5d",max);
 else printf("0");
 }
}
 return 0;
}
       

qq_墨宝宝啊宝_04357478
浏览 1148回答 1
1回答

望远

问题一:直接写成if(a[i][n])判断的是a[i][n]的值是否为0,为0则不成立,不为0则成立ps:神马是数组里最小的鞍点,鞍点有且最多只有一个,鞍点的定义就是该数在该行最大,但在该列最小。//这是核心代码,LZ可以参考一下 for(i=0;i<=2;i++) { max=arr[i][0];//每次都假设第一列的数据为该行最大 for(j=0;j<=2;n++)//获取每行最大值,和对应下标 { if(max<arr[i][j]) { max=arr[i][j]; col=j;//获取该行最大的列坐标 row=i;//获取该行最大的行坐标 } } for(k=0;k<=2;k++) { if(arr[k][col]<max)//判断是否是该列最小 break; } if(k==3)//如果k==3表明上一循环正常结束,是鞍点 { printf("鞍点:arr[%d][%d]=%d\n",row,clo,max); break;//鞍点只有一个 } }
打开App,查看更多内容
随时随地看视频慕课网APP