Java编程题:寻找鞍点 2021-05-19

Posted 超霸霸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java编程题:寻找鞍点 2021-05-19相关的知识,希望对你有一定的参考价值。

  • 什么是鞍点:鞍点指的是数组在某位置上的元素,其所在行最大,所在列最小(鞍点不一定存在)
  • 题目要求:从控制台输入数据初始化一个数组,然后输出其鞍点的位置和值,若不存在则输出"“不存在鞍点”

以下是我写的一个寻找鞍点的代码:

package programmingTopics;

import java.util.Scanner;

public class 寻找鞍点 {
    public static void main(String[] args) {
        System.out.println("请输入数组的行数:");
        int r =new Scanner(System.in).nextInt();
        System.out.println("请输入数组的列数:");
        int c =new Scanner(System.in).nextInt();
        int a[][]=new int [r][c];

        //从控制台输入数据初始化数组
        for(int i=0;i<r;i++)
        {
            for(int j=0;j<c;j++)
            {
                System.out.print("请输入第"+(i+1)+"行"+"第"+(j+1)+"列的数据:");
                int x=new Scanner(System.in).nextInt();
                a[i][j]=x;
            }
        }

        //打印数组
        System.out.println("数组为:");
        for(int i=0;i<r;i++)
        {
            for(int j=0;j<c;j++)
            {
                System.out.print(a[i][j]+"\\t");
            }
            System.out.println();
        }
        //int a[][]= {{1,2,3,4},{5,6,7,8},{9,10,11,12},{1,2,2,3}};
		//line_max为每行的最大值,line_max_column_index为每行最大值的列索引,flag用于判断是否存着鞍点
        int i,j,line_max,line_max_column_index,flag,n=0;
        for(i=0;i<4;i++)
        {
            //假设每行第一个值为该行的最大值,并赋值给line_max
            line_max=a[i][0];
            line_max_column_index=0;
            //找出第i行的最大值,并记录该值的列索引值
            for(j=1;j<4;j++)
            {
                if(a[i][j]>line_max)    //使用循环找到第i行的最大值
                {
                    line_max=a[i][j];
                    line_max_column_index=j;
                }
            }
            line_max=a[i][line_max_column_index];    //使用line_max记录下第i行的最大值
            flag=1;
            //判断第i行的最大值是否是该列的最小值
            for(j=0;j<4;j++)
            {
                if(a[j][line_max_column_index]<line_max)    //如果有值小于line_max,则改点不是鞍点
                {
                    flag=0;
                    break;
                }
            }
            if(flag==1)    //如果flag=1说明line_max为鞍点
            {
                System.out.println("鞍点位置是:("+(i+1)+","+(line_max+1)+"),值是:"+a[i][line_max]);
                n++;
            }
        }
        if(n==0)    //n=0说明没有鞍点
        {
            System.out.println("没有鞍点!");
        }
    }
}

以上是关于Java编程题:寻找鞍点 2021-05-19的主要内容,如果未能解决你的问题,请参考以下文章

C语言编程:找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。

C++信奥赛题目——计算鞍点

CCF NOI1047 寻找鞍点

寻找二维数组的“鞍点”

C语言 找鞍点

c语言问题 找矩阵中的鞍点