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读取比较慢,就用的这种方法。
写在最后:
- 如需转载,请于标题下注明链接形式的wowpH的博客即可;
- 代码原创,如需公开引用,不能删除首行注释(作者,版本号,时间等信息)。
- 如果有疑问欢迎评论留言,尽力解答。
WUSTOJ 1235: 计算矩阵的鞍点(Java)的更多相关文章
- 【原创】开源Math.NET基础数学类库使用(15)C#计算矩阵行列式
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 上个月 ...
- 【原创】开源Math.NET基础数学类库使用(16)C#计算矩阵秩
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 上个月 ...
- 【原创】开源Math.NET基础数学类库使用(17)C#计算矩阵条件数
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 上个月 ...
- Openjudge计算概论-计算矩阵边缘元素之和
/*======================================================================== 计算矩阵边缘元素之和 总时间限制: 1000ms ...
- POJ C程序设计进阶 编程题#1:计算矩阵边缘之和
编程题#1:计算矩阵边缘元素之和 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB ...
- 开源Math.NET基础数学类库使用(17)C#计算矩阵条件数
原文:[原创]开源Math.NET基础数学类库使用(17)C#计算矩阵条件数 本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p ...
- 开源Math.NET基础数学类库使用(16)C#计算矩阵秩
原文:[原创]开源Math.NET基础数学类库使用(16)C#计算矩阵秩 本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4 ...
- 开源Math.NET基础数学类库使用(15)C#计算矩阵行列式
原文:[原创]开源Math.NET基础数学类库使用(15)C#计算矩阵行列式 本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p ...
- matlab计算矩阵每列非0元素个数
在统计分析中,有时候需要计算矩阵每列非0元素的个数,可以用以下方法: 先用find找到每列不为0的元素index,然后用count计数. 假设有矩阵A[M,N], 结果存在countZeros cou ...
随机推荐
- 如何设置fvOptions【翻译】
翻译自:CFD-online 帖子地址:http://www.cfd-online.com/Forums/openfoam-pre-processing/121763-how-set-fvoption ...
- GitHub的SSH免密连接
1.进入当前用户的家目录 $ cd ~ 2.删除.ssh 目录 $ rm -rvf .ssh 3.运行命令生成.ssh 密钥目录 $ ssh-keygen -t rsa -C [GitHub邮箱] [ ...
- SpringBoot面试题 转(已迁移到java相关知识点)
## 什么是springboot 用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件) 创建独立的spring引用程序 main方法运行 嵌入的 ...
- LeetCode 快乐数(Happy Number)
题目描述 编写一个算法来判断一个数是不是“快乐数”. 一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不 ...
- Cesium入门-1-展示一个地球
Cesium 官网教程地址 https://cesium.com/docs/tutorials/getting-started//tutorials/getting-started/ 第一个程序代码: ...
- ArcGIS数据建模 (模型构建器modelbuilder) 培训视频 5章28小节587分钟视频 51GIS网站上线
网址:http://www.51gis.com.cn/kecheng.html?id=358
- 动画之Evaluator
Evaluator就是通过监听器拿到当前动画对对应的具体数值,作用在于从插值器返回的数值进行转换成对应的数值.简单来说就是转换器 Evaluator返回值的类型更加动画中值决定的,所以在使用的时候注意 ...
- MySQL批量导入Excel、txt数据
MySQL批量导入Excel.txt数据 我想Excel是当今最大众化的批量数据管理软件了吧,所以我们会经常涉及到将Excel中数据导入到MySQL中的工作.网上有一些关于直接将Excel导入MySQ ...
- Zend Studio汉化失败,如何给Zend Studio进行汉化
首先,相信看我这篇博文的人也都遇到了和博主我一样的烦恼,就是汉化Zend Studio失败! 话不多说! 方案一,在线安装汉化包 Help–>Install New Software—>W ...
- Qt编写自定义控件37-发光按钮(会呼吸的痛)
一.前言 这个控件是好早以前写的,已经授权过好几个人开源过此控件代码,比如红磨坊小胖,此控件并不是来源于真实需求,而仅仅是突发奇想,类似于星星的闪烁,越到边缘越来越淡,定时器动态改变边缘发光的亮度,产 ...