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
作者: CHEN, Yue
单位: 浙江大学
时间限制: 500 ms
内存限制: 64 MB
代码长度限制: 16 KB

这题边缘的情况也需要考虑,不然过不去测试点3和测试点5。色差指的是绝对值。可以通过 i-1 >= 1等来过滤边缘情况,每次判断8个领边。

#include <iostream>
#include <map>
#include <vector>
using namespace std;
typedef struct{int row;int col;long long color;
}ds;
int main(){long long m,n,tol;cin>>m>>n>>tol;long long store[1005][1005] = {0};map<long long,int> cnt_map;vector<ds> ans;for (int i = 1; i <= n; ++i) {for (int j = 1; j <= m; ++j) {cin>>store[i][j];cnt_map[store[i][j]] = cnt_map[store[i][j]] + 1;}}for (int i = 1; i <= n; ++i) {for (int j = 1; j <= m; ++j) {if(cnt_map[store[i][j]] > 1)continue;//左上if(i-1 >= 1 && j-1 >= 1 &&abs(store[i][j] - store[i-1][j-1]) <= tol)continue;//上if(i-1 >= 1 && abs(store[i][j] - store[i-1][j]) <= tol)continue;//右上if(i-1 >= 1 && j+1 <= m && abs(store[i][j] - store[i-1][j+1]) <= tol)continue;//右if(j+1 <= m && abs(store[i][j] - store[i][j+1]) <= tol)continue;//右下if(j+1 <= m && i+1 <= n && abs(store[i][j] - store[i+1][j+1]) <= tol)continue;//下if(i+1 <= n && abs(store[i][j] - store[i+1][j]) <= tol)continue;//左下if(j+1 <= n && i-1 <= 0 && abs(store[i][j] - store[i-1][j+1]) <= tol)continue;//左if(i-1 <= 0 && abs(store[i][j] - store[i-1][j]) <= tol)continue;ds mid;mid.row = i;mid.col = j;mid.color = store[i][j];ans.push_back(mid);}}if(ans.size() == 1){ds mid = ans[0];cout<<"("<<mid.col<<", "<<mid.row<<"): "<<mid.color;} else if(ans.size() == 0){cout<<"Not Exist";} else{cout<<"Not Unique";}return 0;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. PAT乙级 1029 旧键盘 (20 分)

    1029 旧键盘 (20 分) 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 原题链接 代码 #inc ...

  10. PAT乙级1028 人口普查 (20 分)

    1028 人口普查 (20 分) 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过 2 ...

最新文章

  1. 搜索插件(django-haystack)
  2. 解决端口出现err-disabled问题
  3. css中.和#的区别 不写时代表什么
  4. PHP多线程的实现(PHP多线程类)
  5. 如何使用PressForward进行内容创建
  6. stm32F4修改时钟频率,更换为8MHz晶振
  7. oracle操作之传输表空间
  8. SecureCRT for Mac(强大的终端SSH工具)
  9. Unix C编程:共享内存示例 测试代码
  10. Prosody如何查询已经注册的用户
  11. eoj 3279 爱狗狗的两个dalao(dfs)
  12. 【阿里云IoT+YF3300】9.快速开发modbus设备驱动
  13. android安卓-开源框架汇总
  14. AD9361 介绍 (中)
  15. 时区缩写 UTC, CST, GMT, CEST 以及转换
  16. “华柔星米”4款折叠屏手机屏幕大起底,买手机容易换屏难?
  17. Unity3D热更新技术点——ToLua(下)
  18. win10计算机恢复出厂设置,Win10电脑如何恢復出厂设置
  19. 3D游戏编程与设计-游戏的本质hw1
  20. python2转python3代码_收集python2代码转python3遇到的问题

热门文章

  1. word如何删除页脚页眉?
  2. 难以置信!一篇文章就梳理清楚了 Python OpenCV 的知识体系
  3. 市值仅剩5亿美元,猎豹移动为何赢了财报却输了市值?
  4. C# 下繁体字与简体字的转化
  5. 王之泰 201771010131《面向对象程序设计(java)》第十六周学习总结
  6. 2.5导入和混合配置 P61 Spring实战 第四版
  7. html 按钮变成椭圆,HTML 渐变椭圆按钮
  8. 活动|QuarkChain 高TPS悬赏令:看你能有多快!2.4BTC等你拿!
  9. ffmpeg的使用笔记
  10. 区块链中的POW是什么