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

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

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

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

输入格式:

输入第一行给出三个正整数,分别是 M 和 N(≤ 1000),即图像的分辨率;以及 TOL,是所求像素点与相邻点的颜色差阈值,色差超过 TOL 的点才被考虑。随后 N 行,每行给出 M个像素的颜色值,范围在 [0,224) 内。所有同行数字间用空格或 TAB 分开。

输出格式:

在一行中按照 (x, y): color 的格式输出所求像素点的位置以及颜色值,其中位置 xy分别是该像素在图像矩阵中的列、行编号(从 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,1)开始看,找到符合(其周围 8 个相邻像素的颜色差充分大)的所有点 PointF[],

再从PointF[]里面筛选,看看有没有是唯一的,如果只有一个是唯一的,输出

2个及2个以上唯一,输出Not Unique,

0个是唯一的,输出Not Exist

相关文章
|
11月前
|
算法
水手分椰子
水手分椰子
105 3
L1-041 寻找250 (10 分)
L1-041 寻找250 (10 分)
218 0
L1-041 寻找250 (10 分)
L1-070 吃火锅 (15 分)
L1-070 吃火锅 (15 分)
146 0
L1-070 吃火锅 (15 分)
|
C语言 C++
L1-4 寻找250 (10 分)
对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。
761 0
L1-4 寻找250 (10 分)
|
C语言 C++
1086 就不告诉你 (15 分)
做作业的时候,邻座的小盆友问你:“五乘以七等于多少?”你应该不失礼貌地围笑着告诉他:“五十三。”本题就要求你,对任何一对给定的正整数,倒着输出它们的乘积。
356 0
1086 就不告诉你 (15 分)
牛几 (10 分)
牛几 (10 分)
131 0
h0123. 素数判断 (20 分)
h0123. 素数判断 (20 分)
197 0
L1-055 谁是赢家 (10 分)
L1-055 谁是赢家 (10 分)
109 0
L1-047 装睡 (10 分)
L1-047 装睡 (10 分)
119 0
L1-031 到底是不是太胖了 (10 分)
L1-031 到底是不是太胖了 (10 分)
164 0