找出一个二维数组中的鞍点,既该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。(C语言程序设计第五版 p166.8)

一,条件:该行最大(只有一个) 该列最小(只有一个)

二,功能:输入一个任意二维数组,输出鞍点或者输出鞍点不存在

三,思路:

以2*2的数组为例

(1,1) (1,2)
  (2,1)   (2,2)


1.对行进行检查 记录下最大的元素

2.对最大元素所在的列进行检查 判断最小元素是否是它

3.输出结果

#define N 3                                  //N维数组


int main()

{
   int i,j,k,s[N][N],a,b,t,sign=1;          //i,j,k与数组相关的循环变量 a,b用来存储元素位置 

   printf("按行输入数组");
   for(i=0;i=s[k][b]) sign=1;    //检查列最小
		   
	   
	   }
	 
	if(sign==0) printf(" 鞍点:(%d,%d)   %d\n",a+1,b+1,s[a][b]);
	
  }
if(sign!=0)
printf("无鞍点");
   

system("pause");
   
return 0;

}

PS:初学小白一枚,如果有错请大家赐教,谢谢(ノ ̄▽ ̄)

你可能感兴趣的:(c语言)