鞍点

鞍点求解过程
       所谓鞍点就是在二维数组中该位置上的元素在该行中最大,在该列中最小(鞍点可能存在也可能不存在,特殊的情况下可能都是鞍点或者一行有几个鞍点)。
          问题的分析步骤如下:
       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]);   //如果是行中最大值又是列中最小值那么打印这个元素
        }
    }
    






  




   

你可能感兴趣的:(鞍点)