1068 万绿丛中一点红 (20 分)

对于计算机而言,颜色不过是像素点对应的一个 24 位的数值。现给定一幅分辨率为 M×N 的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围 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

【代码】

 1// 1068 万绿丛中一点红 (20 分)23#include<cstdio>4#include<iostream>5#include<cstring>6#include<map>7#include<cmath>8using namespace std;9
10map<int, int> vis;
11int s[1001][1001];
12int n, m ,tol;
13//周围坐标的加减运算
14int dir[8][2] = {1,0, -1,0, 0,1, 0,-1, 1,1, 1,-1, -1,1, -1,-1};
15//判断是否大于阈值
16bool check(int x, int y)
17{
18    for(int i=0 ;i<8 ;i++){
19        int xx = x + dir[i][0];
20        int yy = y + dir[i][1];
21        if(xx>=0 && xx<n && yy<m && yy>=0 && abs(s[xx][yy]-s[x][y])<=tol ) return false;
22    }
23    return true;
24}
25
26int main(){
27    cin>>m>>n>>tol;
28
29    for(int i=0 ;i<n ;i++){
30        for(int j=0 ;j<m ;j++){
31            cin>>s[i][j];
32            vis[s[i][j]]++;
33        }
34    }
35    //cnt记录只出现一次的数字的个数
36    //x y记录坐标
37    int cnt = 0;
38    int x, y;
39    for(int i=0 ;i<n ;i++){
40        for(int j=0 ;j<m ;j++){
41            if(vis[s[i][j]]==1 && check(i,j)){
42                cnt++;
43                x = i;
44                y = j;
45            }
46        }
47    }
48
49    if(cnt==1){
50        printf("(%d, %d): %d\n",y+1, x+1, s[x][y]);
51    }
52    else if(cnt>1){
53        puts("Not Unique");
54    }
55    else{
56        puts("Not Exist");
57    }
58
59    return 0;
60}

【思路】

  1. 使用map来确保数字的唯一性,key用来存储数字,vaule用来记录数字出现的次数。

  2. 使用dir二维数组来完成对周围8个元素坐标的计算。

  3. 因为题目中明确的是“颜色差充分的大”,因此需要去绝对值。

1068 万绿丛中一点红 (20 分)相关推荐

  1. C++学习之路 | PTA乙级—— 1068 万绿丛中一点红 (20 分)(精简)

    1068 万绿丛中一点红 (20 分) 对于计算机而言,颜色不过是像素点对应的一个 24 位的数值.现给定一幅分辨率为 M×N 的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点 ...

  2. 【简便解法】1068 万绿丛中一点红 (20分)

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 对于计算机而言,颜色不过是像素点对应的一个 24 位的数值.现给定一幅分辨率为 M×N 的画,要求你找出万绿丛中 ...

  3. Python PAT乙级 1068 万绿丛中一点红 (20分) 成功

    对于计算机而言,颜色不过是像素点对应的一个 24 位的数值.现给定一幅分辨率为 M×N 的画,要求你 找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围 8 个相邻像素的颜 色 ...

  4. PTA乙级 1068 万绿丛中一点红——20分

    对于计算机而言,颜色不过是像素点对应的一个24位的数值.现给定一幅分辨率为MxN的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围8个相邻像素的颜色差充分大. 输入 ...

  5. 1068 万绿丛中一点红 (20分)

    对于计算机而言,颜色不过是像素点对应的一个 24 位的数值.现给定一幅分辨率为 M×N 的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围 8 个相邻像素的颜色差充 ...

  6. 【PAT乙级】1068 万绿丛中一点红 (20 分)

    题目地址 #include<cstdio> #include<iostream> #include<algorithm> #include<cmath> ...

  7. PAT 1068. 万绿丛中一点红(20)-乙级

    对于计算机而言,颜色不过是像素点对应的一个24位的数值.现给定一幅分辨率为MxN的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围8个相邻像素的颜色差充分大. 输入 ...

  8. PAT乙级_1068 万绿丛中一点红 (20 分)_python

    题目: 对于计算机而言,颜色不过是像素点对应的一个 24 位的数值.现给定一幅分辨率为 M×N 的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围 8 个相邻像素的 ...

  9. 1068 万绿丛中一点红(20 分)----(一点红,全是绿.)

    1068 万绿丛中一点红(20 分) 对于计算机而言,颜色不过是像素点对应的一个 24 位的数值.现给定一幅分辨率为 M×N 的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的 ...

  10. PAT 乙级 1068  万绿丛中一点红

    1068 万绿丛中一点红 (20 point(s)) 对于计算机而言,颜色不过是像素点对应的一个 24 位的数值.现给定一幅分辨率为 M×N 的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像 ...

最新文章

  1. 从言行合一到知行合一
  2. 单片机向左,嵌入式向右
  3. 配置虚拟目录的方式(Linux下/windows下)
  4. network programming-简单的TCP客户服务器编程
  5. MySQL建表,DML,DDL,约束,外键策略
  6. Vue 页面如何监听用户预览时间
  7. java类怎么删除对象_java中对象的生成使用和删除
  8. 在 OpenShift 4 上部署 Ansible Tower 环境
  9. python 智能造句_[零基础学Python]正规地说一句话
  10. php部分---注册审核
  11. ChartControl控件
  12. 51 单片机AD采集电压值的坑
  13. Docker运维笔记-Docker端口映射
  14. 国家级精品课程 电子资源 网址
  15. 项目Beta冲刺(7/7)(追光的人)(2019.5.29)
  16. Agile Scrum WaterFall通俗易懂的全过程整理
  17. Cannot deserialize instance of `com.xxx.project.biz.domain.xxx` out of START_ARRAY token;
  18. ISO三体系,招投标企业认证最多的资质
  19. 岁月温柔-17 妈妈在市第一人民医院ICU第七天
  20. 贝壳找房校招java笔试题_2020年最新贝壳找房java面试题分享

热门文章

  1. react实现微信分享
  2. 针对笔记本双显卡安装ubuntu16.04双系统,开机只显示背景图解决办法
  3. python中as是什么意思_python中with python中with as 是什么意思刚入门求解释!!!
  4. 这可能是史上最全的常用学术网站
  5. OSChina 周四乱弹 ——程序员为啥要买苹果手机啊?
  6. katana lookfile属性的修改overwride
  7. Netty高级进阶之基于Netty的Websocket开发网页聊天室
  8. 百度竞价账户能否多少词?
  9. 135. 精读《极客公园 IFX - 上》
  10. 不带任何脏字的英文骂人法