求马鞍点问题

♥求马鞍点问题。
如果矩阵a中存在一个元素a[i][j]满足这样的条件:

a[i][j]是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点。设计一个程序计算出 m * n 的矩阵a的所有马鞍点。
复制代码
public class HousePoint {
    public static void MinMax(int[][] a)
    {
        int m = a.length;                     //行数
        int n = a[0].length;                  //列数
        int[] min = new int[m];
        int[] max = new int[n];
        for (int i = 0; i < m; i++)           //计算每行的最小元素,放入min[i]中
        {
            min[i] = a[i][0];
            for (int j = 1; j < n; j++)
            {
                if (a[i][j] < min[i])
                    min[i] = a[i][j];
            }
        }
        for (int j = 0; j < n; j++)           //计算每列的最大元素,放入max[i]中
        {
            max[j] = a[0][j];
            for (int i = 1; i < m; i++)
            {
                if (a[i][j] > max[j])
                    max[j] = a[i][j];
            }
        }
        for (int i = 0; i < m; i++)           //判定是否为马鞍点
            for (int j = 0; j < n; j++)
                if (min[i] == max[j])         //找到并显示马鞍点
                    System.out.printf("(%d,%d):%d\n",i,j,a[i][j]);
    }
    public static void disp(int[][] a)
    {
        for (int i = 0; i < a.length; i++)
        {
            for (int j = 0; j < a[i].length; j++)
            {
                System.out.printf("%4d",a[i][j]);
            }
            System.out.println();
        }
    }

    public static void main(String[] args) {
        int[][] a = {{9,10,2,4},{15,11,7,8},{4,5,3,6}};
        System.out.println(" a:");
        disp(a);
        System.out.println("所有马鞍点:");
        MinMax(a);
    }
}
复制代码

运行结果:

posted @   cszcoder  阅读(330)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示