IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java实现寻找二维数组的鞍点 -> 正文阅读

[Java知识库]Java实现寻找二维数组的鞍点

一、题目描述:

定义一个二维数组用于存储一个4×4 矩阵的元素值,并找出这个矩阵的所有鞍点,然后输出鞍点的位置及值。

二、鞍点解释

  • ①在微分方程中,沿着某一方向是稳定的,另一条方向是不稳定的奇点,叫做鞍点。
  • ②在泛函中,既不是极大值点也不是极小值点的临界点,叫做鞍点。
  • ③在矩阵中,一个数在所在行中是最大值,在所在列中是最小值,则被称为鞍点。
  • ④在物理上要广泛一些,指在一个方向是极大值,另一个方向是极小值的点。

三、分析

鞍点就是二维数组中一个元素既是它所在行的最大值,又是所在列的最小值。

  • 算法思路:
    ①先寻找每一行的最大值
    ②记录每一行最大数的所在的列
    ③判断最大值在他所在的列是否也是最小值
    ④若是鞍点则输出鞍点所在位置及值,若不存在鞍点输出“没有鞍点”。

四、代码

package com.lyp.test;

import java.util.Scanner;

public class findSaddlePoint {

    public static void main(String[] args) {
        int s,min,max,count = 0;
        int[] a = new int[4];
        Scanner scanner = new Scanner(System.in);
        //定义4*4数组
        int[][] array = new int[4][4];
        //接收数组的输入
        System.out.println("请输入数组元素:");
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 4; j++) {
                System.out.print("请输入第"+(i+1)+"行第"+(j+1)+"个元素:");
                array[i][j] = scanner.nextInt();
            }
        }
        //打印数组
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 4; j++) {
                System.out.print(array[i][j]+"   ");
            }
            System.out.println();
        }
        //寻找鞍点
        for (int i = 0; i < 4; i++) {
            max = array[i][0];
            for (int j = 0; j < 4; j++) { //找每行的最大值
                if (array[i][j] > max){
                    max = array[i][j];
                }
            }
            s = 0;
            for (int j = 0; j < 4; j++) { //将最大值所在的列存入a[]中
                if (array[i][j] == max){
                    a[s] = j;
                    s++;    //s的值是最大值的个数
                }
            }
            min = max;
            for (int j = 0; j < s; j++) { //有几个最大值,就进行几次循环
                for (int k = 0; k < 4; k++) { //判断这个行的最大值是不是列最小
                    if(min > array[k][a[j]]) { //如果不是,则判断下一个
                        break;
                    }
                    if (k == 3){ //说明是鞍点
                        System.out.println("鞍点为第"+(i+1)+"行第"+(a[j] + 1)+"列的元素:"+array[i][a[j]]);
                        count++;
                    }
                }
            }
        }
        if(count == 0){
            System.out.println("没有鞍点");
        }

    }
}

五、输出结果

示例一:
在这里插入图片描述
示例二:
在这里插入图片描述
示例三:
在这里插入图片描述

示例四:
在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-29 12:51:50  更:2021-10-29 12:53:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:10:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码