为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
qq_墨宝宝啊宝_04357478 2016-12-03 10:08:39
 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.这是一道求二维数组中,它在列是最小的,在行是最大的一道题。然后我再敲比较大小那部分,一直出不来结果,不知道要怎么写那部分,求指导。#includeint 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;}        
查看完整描述

1 回答

?
望远

TA贡献1017条经验 获得超1032个赞

问题一:直接写成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;//鞍点只有一个
		}

	}


查看完整回答
1 反对 回复 2016-12-03
  • 1 回答
  • 2 关注
  • 1146 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信