PAT——1068. 万绿丛中一点红
对于计算机而言,颜色不过是像素点对应的一个24位的数值。现给定一幅分辨率为MxN的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围8个相邻像素的颜色差充分大。
输入格式:
输入第一行给出三个正整数,分别是M和N(<= 1000),即图像的分辨率;以及TOL,是所求像素点与相邻点的颜色差阈值,色差超过TOL的点才被考虑。随后N行,每行给出M个像素的颜色值,范围在[0, 224)内。所有同行数字间用空格或TAB分开。
输出格式:
在一行中按照“(x, y): color”的格式输出所求像素点的位置以及颜色值,其中位置x和y分别是该像素在图像矩阵中的列、行编号(从1开始编号)。如果这样的点不唯一,则输出“Not Unique”;如果这样的点不存在,则输出“Not Exist”。
输入样例1:
- 8 6 200
- 0 0 0 0 0 0 0 0
- 65280 65280 65280 16711479 65280 65280 65280 65280
- 16711479 65280 65280 65280 16711680 65280 65280 65280
- 65280 65280 65280 65280 65280 65280 165280 165280
- 65280 65280 16777015 65280 65280 165280 65480 165280
- 16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215
输出样例1:
- (5, 3): 16711680
输入样例2:
- 4 5 2
- 0 0 0 0
- 0 0 3 0
- 0 0 0 0
- 0 5 0 0
- 0 0 0 0
输出样例2:
- Not Unique
输入样例3:
- 3 3 5
- 1 2 3
- 3 4 5
- 5 6 7
输出样例3:
- Not Exist
- package com.hone.basical;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Scanner;
- /**
- * 原题目:https://www.patest.cn/contests/pat-b-practise/1067
- * @author Xia
- * 题目有三个核心地方:
- * (1):该点必须是唯一的,一点绿,也就是说如果不是唯一,则直接跳过。
- * (2):怎么样存储才能保证其唯一性呢?用数值作为数组下标的方式?肯定不妥当,因为像素点涉及到2的24次方,如果强行建立一个大的数组,内存肯定得爆炸。
- * (3):现在有一个疑惑?
- * 二维数组四周的元素到底能不能算?毕竟他没有周围八个元素。
- * 如果周围的元素检查,则得建立一个方法避免数组越界的情况。
- * 尽管如此,内存还是爆炸了。。
- */
- public class basicalLevel1068color {
- static int a;
- static int b;
- static int[][] color = new int[1001][1001];
- static int tol;
- //用一个dir指引四周的八种情况的变化
- static int[][] dir ={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
- public static void main(String[] args) {
- Scanner in = new Scanner(System.in);
- a = in.nextInt();
- b = in.nextInt();
- tol = in.nextInt();
- Map<Integer, Integer> times = new HashMap<>(); //用一个map来存储每一个的出现次数
- for (int i = 0; i < b; i++) {
- for (int j = 0; j < a; j++) {
- color[i][j] = in.nextInt();
- if (times.get(color[i][j])!=null) {
- int index = times.get(color[i][j]);
- times.put(color[i][j], index+1);
- }else {
- times.put(color[i][j], 1);
- }
- }
- }
- int row = -1;
- int col = -1;
- int num = 0;
- for (int i = 0; i < b; i++) {
- for (int j = 0; j < a; j++) {
- if (times.get(color[i][j]) == 1&&check(i, j)) {
- num++;
- row = i;
- col = j;
- }
- }
- }
- if (num > 1) {
- System.out.println("Not Unique");
- }else if (num == 1) {
- System.out.println("("+(col+1)+", "+(row+1)+"): "+color[row][col]);
- }else if (num == 0) {
- System.out.println("Not Exist");
- }
- }
- /**
- * 检查是否符合要求
- * @param x
- * @param y
- * @return
- */
- public static boolean check(int x,int y){
- boolean sigle = true;
- for (int h = 0; h < 8; h++) {
- int xx = x + dir[h][0];
- int yy = y + dir[h][1];
- if(xx>=0 && xx<b && yy<a && yy>=0 && Math.abs(color[xx][yy]-color[x][y])<=tol) sigle = false;
- }
- return sigle;
- }
- }
PAT——1068. 万绿丛中一点红的更多相关文章
- PAT 1068 万绿丛中一点红(20)(测试点分析+思路分析)
1068 万绿丛中一点红(20 分) 对于计算机而言,颜色不过是像素点对应的一个 24 位的数值.现给定一幅分辨率为 M×N 的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的 ...
- PAT 1068 万绿丛中一点红
https://pintia.cn/problem-sets/994805260223102976/problems/994805265579229184 对于计算机而言,颜色不过是像素点对应的一个 ...
- PAT 1068. 万绿丛中一点红(20)
对于计算机而言,颜色不过是像素点对应的一个24位的数值.现给定一幅分辨率为MxN的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围8个相邻像素的颜色差充分大. 输入 ...
- PAT 乙级 1068 万绿丛中一点红(20 分)
1068 万绿丛中一点红(20 分) 对于计算机而言,颜色不过是像素点对应的一个 24 位的数值.现给定一幅分辨率为 M×N 的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的 ...
- PAT(B) 1068 万绿丛中一点红(C)
题目链接:1068 万绿丛中一点红 (20 point(s)) 参考博客:1068. 万绿丛中一点红(20) i逆天耗子丶 题目描述 对于计算机而言,颜色不过是像素点对应的一个 24 位的数值.现给定 ...
- 1068 万绿丛中一点红 (20分)C语言
对于计算机而言,颜色不过是像素点对应的一个 24 位的数值.现给定一幅分辨率为 M×N 的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围 8 个相邻像素的颜色差充 ...
- P1068 万绿丛中一点红
P1068 万绿丛中一点红 转跳点:
- 【PAT】B1068 万绿丛中一点红(20 分)
一开始因为看见这题就头疼,可费了点时间. 要考虑所有元素,如果忽略外圈元素,最后一个样例过不去. 而且要求只出现一次的元素, 我没有使用map,因为当时还没学,用map储存元素会节约好多代码 #inc ...
- PAT 1068 Find More Coins[dp][难]
1068 Find More Coins (30)(30 分) Eva loves to collect coins from all over the universe, including som ...
随机推荐
- IAAS,SAAS,PAAS, CaaS的区别
来源:云计算头条微信公众号 作者: 你一定听说过云计算中的三个“高大上”的你一定听说过云计算中的三个“高大上”的概念:IaaS.PaaS和SaaS,这几个术语并不好理解.不过,如果你是个吃货,还 ...
- Hibernate入门(四)—— 查询
一.Hibernate查询 1.Hibernate检索(查询)方式的分类 OID检索 :根据主键查询,get/load 对象导航检索 :通过一个对象获得其关联对象.[重点] Category cate ...
- NodeList、HTMLCollection和NamedNodeMap
上篇文章以arguments为例讲到了类数组对象,这篇我们讨论更多的类数组对象NodeList.HTMLCollection和NamedNodeMap.既然是类数组对象,这3种对象也都能应用上篇文章中 ...
- meta name id class 标签的区别
meta https://zhidao.baidu.com/question/2052283721385566387.html name 跟 id 的区别 http://blog.csdn.net/f ...
- Java 开源博客 Solo 1.6.0 发布 - 新后台
简介 Solo 是一款一个命令就能搭建好的 Java 开源博客系统,并内置了 15+ 套精心制作的皮肤.除此之外,Solo 还有着非常活跃的社区,文章分享到社区后可以让很多人看到,产生丰富的交流互动. ...
- JS中0与‘0’
JS中0为false,字符串‘0’为true
- PHP两种实现无级递归分类的方法
/** * 无级递归分类 TP框架 * @param int $assortPid 要查询分类的父级id * @param mixed $tag 上下级分类之间的分隔符 * @return strin ...
- 新建虚拟机,每次都提示无法连接虚拟设备 ide1:0
处理方式:看到了这个老哥http://www.cnblogs.com/dean-du/p/6888513.html的博客,发现问题是一样的,所以记录一下. 将虚拟机设置中的CD/DVD选项中的连接更改 ...
- 本地调试接口返回信息不对 以及 jar冲突问题
今天下午在本地调试的时候碰到个很奇怪的问题:服务调用接口,返回的明明是有数据的,然后通过gson转换对象后,对象里面并没有自己想要的数据.看了代码什么的都没有问题.思考到底是哪里出了问题,想了半天想到 ...
- 使用 Azure PowerShell 将 IaaS 资源从经典部署模型迁移到 Azure Resource Manager
以下步骤演示了如何使用 Azure PowerShell 命令将基础结构即服务 (IaaS) 资源从经典部署模型迁移到 Azure Resource Manager 部署模型. 也可根据需要通过 Az ...