鞍点求解过程
所谓鞍点就是在二维数组中该位置上的元素在该行中最大,在该列中最小(鞍点可能存在也可能不存在,特殊的情况下可能都是鞍点或者一行有几个鞍点)。
问题的分析步骤如下:
1、建立一个二维数组,随机产生一组二维数组值这里假定产生的时10-20之间的数
2、判断该位置上的元素是不是行中最大
3、判断该位置上的元素是不是列中最小
具体求解代码如下:
问题的分析步骤如下:
1、建立一个二维数组,随机产生一组二维数组值这里假定产生的时10-20之间的数
2、判断该位置上的元素是不是行中最大
3、判断该位置上的元素是不是列中最小
具体求解代码如下:
int main(int argc, const char * argv[])
{
//首先得到一个二维数组,打印出来
int a[3][4] = {0};
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
a[i][j] = arc4random()%10 + 10;
printf("%d ",a[i][j]);
}
printf("\n");
}
//求出某个位置上的元素是不是行中最大值
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
BOOL isMax = YES;
int max = a[i][j]; //假定是最大的
//判断 a[i][j]是不是行中最大的.
for (int k = 0; k < 4; k++)
{
if (max < a[i][k])
{
isMax = NO;
break; //退出本次的循环,当有多个循环嵌套时,是跳出本层的循环
}
}
if (isMax == NO)
{
continue; //跳出本次循环继续下一次的循环
}
//判断该位置上的元素如果是行中最大值,是不是列中得最大值
BOOL isMin = YES;
int min = a[i][j];
for (int o = 0; o < 3; o++)
{
if (min > a[o][j])
{
isMin = NO;
break;
}
}
if (isMin == NO)
{
continue;
}
printf("%d ",a[i][j]); //如果是行中最大值又是列中最小值那么打印这个元素
}
}