zoukankan      html  css  js  c++  java
  • WUSTOJ 1235: 计算矩阵的鞍点(Java)

    1235: 计算矩阵的鞍点

    题目

      输出二维数组中行上为最大,列上为最小的元素(称为鞍点)及其位置(行列下标)。如果不存在任何鞍点,请输出"404 not found"(不带引号)。更多内容点击标题。

    分析

      没什么好分析的,只要看懂下面这几组数据就明白了。

    输入

    2
    2 2
    1 1
    1 1
    
    2 2
    2 3
    1 3
    

    输出

    1 1 1
    1 1 2
    1 2 1
    1 2 2
    3 1 2
    3 2 2
    

    代码

    /**
     * time 1248ms
     * @author PengHao
     * @version A2.0
     * @date 2019-04-21 下午8:16:45
     */
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.io.StreamTokenizer;
    
    public class Main {
    
    	/**
    	 * Input and Output
    	 * 
    	 * @author PengHao
    	 * @version 1.0
    	 * @date 2019年4月21日 下午7:14:20
    	 */
    	private static class IO {
    		// 输入部分
    		InputStreamReader isr = new InputStreamReader(System.in);
    		BufferedReader br = new BufferedReader(isr);
    		StreamTokenizer st = new StreamTokenizer(br);
    
    		public int nextInt() {
    			try {
    				st.nextToken();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    			return (int) st.nval;
    		}
    
    		// 输出部分
    		OutputStreamWriter osw = new OutputStreamWriter(System.out);
    		PrintWriter pw = new PrintWriter(osw);
    
    		void print(int x) {
    			pw.print(x);
    			pw.flush();
    		}
    
    		void print(String s) {
    			pw.print(s);
    			pw.flush();
    		}
    
    		void println() {
    			pw.println();
    			pw.flush();
    		}
    
    		void println(String s) {
    			pw.println(s);
    			pw.flush();
    		}
    
    		void println(int a, int x, int y) {
    			print(a);
    			print(" ");
    			print(x);
    			print(" ");
    			print(y);
    			println();
    		}
    	}
    
    	private IO io = new IO();
    	private int n, m;
    	private int[][] matrix; // 矩阵
    
    	public Main() {
    		int t;
    		matrix = new int[23][23];
    		boolean flag;
    		t = io.nextInt();
    		while ((t--) > 0) {
    			input();
    			flag = true; // 初始没找到鞍点
    			for (int i = 1; i <= n; i++) {
    				for (int j = 1; j <= m; j++) {
    					if (largest(i, j) && smallest(i, j)) {
    						io.println(matrix[i][j], i, j);
    						flag = false;
    					}
    				}
    			}
    			if (flag) {
    				io.println("404 not found");
    			}
    		}
    	}
    
    	/**
    	 * Input data
    	 */
    	private void input() {
    		n = io.nextInt();
    		m = io.nextInt();
    		for (int i = 1; i <= n; i++) {
    			for (int j = 1; j <= m; j++) {
    				matrix[i][j] = io.nextInt();
    			}
    		}
    	}
    
    	/**
    	 * @param x 行下标
    	 * @param y 列下标
    	 * @return true 如果这个数是这一行最大的数
    	 */
    	private boolean largest(int x, int y) {
    		for (int j = 1; j <= m; j++) {
    			if (matrix[x][j] > matrix[x][y]) {
    				return false;
    			}
    		}
    		return true;
    	}
    
    	/**
    	 * @param x 行下标
    	 * @param y 列下标
    	 * @return true 如果这个数是这一列最小的数
    	 */
    	private boolean smallest(int x, int y) {
    		for (int i = 1; i <= n; i++) {
    			if (matrix[i][y] < matrix[x][y]) {
    				return false;
    			}
    		}
    		return true;
    	}
    
    	public static void main(String[] args) {
    		new Main();
    	}
    
    }
    

    代码补充

      类IO有点长,就是个输入输出的功能,同Scanner(输入)和println(输出)一样,我只是听说Scanner读取比较慢,就用的这种方法。


    写在最后:

    1. 如需转载,请于标题下注明链接形式的wowpH的博客即可;
    2. 代码原创,如需公开引用,不能删除首行注释(作者,版本号,时间等信息)。
    3. 如果有疑问欢迎评论留言,尽力解答。

  • 相关阅读:
    201521123076《java程序设计》第四次总结
    201521123076《java程序设计》第三周学习总结
    201521123076《Java程序设计》第2周学习总结
    软件工程网络15个人阅读作业2
    软件工程网络15个人作业1
    java程序设计----学生基本信息管理系统
    201521123070 《JAVA程序设计》第14周学习总结
    201521123070 《JAVA程序设计》第13周学习总结
    201521123070 《JAVA程序设计》第12周学习总结
    201521123070《Java程序设计》 第11周学习总结
  • 原文地址:https://www.cnblogs.com/wowpH/p/11060814.html
Copyright © 2011-2022 走看看