做婚礼网站的公司简介,wordpress角色名,网络营销必看的几本书,广西建设学院网站题目内容#xff1a;
给定一个n*n矩阵A。矩阵A的鞍点是一个位置#xff08;i#xff0c;j#xff09;#xff0c;在该位置上的元素是第i行上的最大数#xff0c;第j列上的最小数。一个矩阵A也可能没有鞍点。
你的任务是找出A的鞍点。
改进目标#xff1a;
网络上很多…题目内容
给定一个n*n矩阵A。矩阵A的鞍点是一个位置ij在该位置上的元素是第i行上的最大数第j列上的最小数。一个矩阵A也可能没有鞍点。
你的任务是找出A的鞍点。
改进目标
网络上很多视频和博客都没有考虑到如果某一行最大数值MAX出现相等的情况极端一点当数组元素全部相等的时候所有的点其实都是鞍点以下程序是我针对这一问题做的一些改进。 ps: 提问了B站讲课的up主老师他的意思是如果出现一行上最大的元素相等的情况这个数组就没有鞍点了。因为是最大值“最”就限定了它不能有多个相同的。有相同的最大值就不是“最”了只能是最大值之一。
他说的好像也挺有道理哈哈哈哈这就属于语文问题了。C语言程序问题很多都有歧义主要是理解算法思想最重要我的程序也只是给大家一个小小的参考如果有其他想法的可以在下面评论区讨论一起学习进步欧力给
#includestdio.h
#define M 4
#define N 4
//用来存放鞍点坐标的结构体
struct zuobiao
{int row[M];int colum[N];int n;
}zb;int main() {int a[M][N] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };//实验数据//int a[M][N] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, };//实验数据//int a[M][N] { 1, 2, 3, 4, 5, 6, 7, 9, 9, 0, 1, 7, 3, 4, 5, 6, };//实验数据int max, min;int flag1 0, flag2 0;int j;//输出数组for (int i 0; i M; i) {for (j 0; j N; j) {printf(%5d, a[i][j]);}printf(\n);}//鞍点for (int i 0; i M; i) {max a[i][0];zb.row[0] i, zb.colum[0] 0;zb.n 1;for (j 1; j N; j) {if (a[i][j] max) {zb.n 1;max a[i][j];zb.row[zb.n -1] i;zb.colum[zb.n -1] j;}else if (a[i][j] max) {zb.n ;max a[i][j];zb.row[zb.n - 1] i;zb.colum[zb.n - 1] j;}}min max;for (j 0; j zb.n; j){flag1 0;for (int k 0; k M; k) {if (a[k][zb.colum[j]] min) {flag1 1;break;}}if (!flag1) {flag2 1;printf(鞍点%d的行: %d 列: %d\n, max, zb.row[j], zb.colum[j]);}} }if (!flag2) {printf(该数组没有鞍点\n);}return 0;
}