• 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点。


    找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点

    【答案解析】

    鞍点是行上最大,列上最小的元素,因此对数组的第i元素进行如下操作:

    1. 找到该行上最大元素,用max标记,并标记该元素所在列colindex
    2. 找colindex列上最小的元素,用min标记,并标记该元素所在行号rowindex
    3. 如果max和min相等,并且最小的元素刚好是在第i行,则为鞍点

    如果所有行找完了,没有输出则没有鞍点

    【代码实现】

    #include<stdio.h>
    #define M 3
    #define N 4
    
    int main()
    {
    	int max, min, rowindex, colindex, flag = 0;
    	int array[M][N];
    	printf("请输入%d行%d列的数组:
    ", M, N);
    	for (int i = 0; i < M; i++)
    	{
    		for (int j = 0; j < N; j++)
    			scanf("%d", &array[i][j]);
    	}
    
    	for (int i = 0; i < M; ++i)
    	{
    		// 找到i行上最大的元素,记录该元素在列号colindex
    		max = array[i][0];
    		for (int j = 0; j < N; ++j)
    		{
    			if (array[i][j] > max)
    			{
    				max = array[i][j];
    				colindex = j;
    			}
    		}
    
    		// 找max所在列colindex上最小的元素,并记录其所在的行
    		min = array[0][colindex];
    		for (int j = 0; j < M; ++j)
    		{
    			if (array[j][colindex] < min)
    			{
    				min = array[j][colindex];
    				rowindex = j;
    			}
    		}
    
    		// 如果最小元素与最小元素相同,并且最小元素也在第i行,则为鞍点
    		if (max == min && i == rowindex)
    		{
    			flag = 1;
    			printf("鞍点为:%d行%d列的元素%d", rowindex, colindex, max);
    			break;
    		}
    	}
    
    	if (0 == flag)
    		printf("没有鞍点");
    	return 0;
    }
    

    【结果截屏】

    找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点。

  • 相关阅读:
    MySQL 中的 3 种注释
    Macbook 彻彻底底的卸载MySQL
    MacBook 安装 MySQL 5.7.29(新手都看得懂的安装教程)
    Java Junit单元测试
    理解 Java 方法引用(方法引用符:“双冒号 :: ”)
    iOS应用启动时间
    iOS遍历数组的同时删除元素
    Xcode 中的断言
    Mac 下 查看 使用某端口的进程和关闭该进程的命令
    RAC 数据库的启动与关闭
  • 原文地址:https://www.cnblogs.com/weiyidedaan/p/13666753.html
Copyright © 2020-2023  润新知