【好题分享】求鞍点

文章目录

  • 题目: 求鞍点:求出一个3行4列的二维数组中鞍点及其所在行与列(鞍点:即该位置上的元素在该行中最大,在该列中最小。)
  • 思路:
  • 代码实现
  • 总结

题目: 求鞍点:求出一个3行4列的二维数组中鞍点及其所在行与列(鞍点:即该位置上的元素在该行中最大,在该列中最小。)

思路:

1.定义二维数组
2.标记一行中的最大元素
3.标记一列中的最小元素
4.被标记2次的点就是鞍点

代码实现

#define r 3
#define c 4
int main()
{int a[r][c], b[r][c] = { 0 };//数组a为所给二维数组,数组b用来标记aint i, j; //i,j循环变量int max, min;  //标记行中最大值,列中最小值int rmax, cmax, rmin, cmin; //最大/小值坐标//实现思路1for (i = 0; i < r; i++){for (j = 0; j < c; j++){scanf("%d", &a[i][j]);}}//寻找每行中最大元素(思路2)for (i = 0; i < r; i++) //遍历每一行{max = a[i][0]; //最大值为该行首元素rmax = i;cmax = 0;for (j = 1; j < c; j++){//比较max和max右方一个元素if (max < a[i][j]){max = a[i][j];rmax = i;cmax = j;}}b[rmax][cmax]++; //标记该行最大元素}//寻找每列最小元素(思路3)for (i = 0; i < c; i++)//遍历每一列{min = a[0][i]; //最小值初始化为该列第一行元素rmin = 0;cmin = i;for (j = 1; j < r; j++){	//比较min和min下方元素if (min > a[j][i]){min = a[j][i];rmin = j;cmin = i;}}b[rmin][cmin]++;//标记每一列最小元素}for (i = 0; i < r; i++){for (j = 0; j < c; j++){if (b[i][j] == 2) //实现思路4{printf("ROW:%d  COLUNMN:%d\n", i, j);printf("The Point is %d\n", a[i][j]);}}}return 0;
}

总结

要善于标记具有某一种特性的变量,最后靠是否具有标记来输出满足条件的结果


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部