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

对于计算机而言,颜色不过是像素点对应的一个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

code:
 1 #include <stdio.h>
 2
 3 int cnt[1 << 24] = {0};
 4 int cmp(int a,int b,int c)
 5 {
 6     if(a-b > c||a-b < -c)
 7         return 1;
 8     return 0;
 9 }
10
11 int main()
12 {
13     int m,n,tol,i,j;
14     scanf("%d%d%d",&m,&n,&tol);
15     int a[n][m];
16     for(i = 0;i < n;i++)
17     {
18         getchar();
19         for(j = 0;j < m;j++)
20         {
21             scanf("%d",&a[i][j]);
22             cnt[a[i][j]]++;
23         }
24     }
25     int c,d,count = 0,re = -1,flag = 0;
26
27     for(i = 0;i < n;i++)
28     {
29         for(j = 0;j < m;j++)
30         {
31             flag = 0;
32             if(j+1 <= m-1)
33             {
34                 if(cmp(a[i][j],a[i][j+1],tol) == 0)
35                     flag = 2;
36             }
37             if(j-1 >= 0)
38             {
39                 if(cmp(a[i][j],a[i][j-1],tol) == 0)
40                     flag = 2;
41             }
42             if(i-1 >= 0)
43             {
44                 if(cmp(a[i][j],a[i-1][j],tol) == 0)
45                     flag = 2;
46             }
47             if(i+1 <= n-1)
48             {
49                 if(cmp(a[i][j],a[i+1][j],tol) == 0)
50                     flag = 2;
51             }
52             if(i-1 >= 0&&j-1 >= 0)
53             {
54                 if(cmp(a[i][j],a[i-1][j-1],tol) == 0)
55                     flag = 2;
56             }
57             if(i-1 >= 0&&j+1 <= m-1)
58             {
59                 if(cmp(a[i][j],a[i-1][j+1],tol) == 0)
60                     flag = 2;
61             }
62             if(i+1 <= n-1&&j-1 >= 0)
63             {
64                 if(cmp(a[i][j],a[i+1][j-1],tol) == 0)
65                     flag = 2;
66             }
67             if(i+1 <= n-1&&j+1 <= m-1)
68             {
69                 if(cmp(a[i][j],a[i+1][j+1],tol) == 0)
70                     flag = 2;
71             }
72             if(flag == 0&&cnt[a[i][j]] == 1)
73             {
74                 re = a[i][j];
75                 c = i;
76                 d = j;
77                 count++;
78             }
79         }
80     }
81
82     if(count > 1)
83     {
84         printf("Not Unique\n");
85     }
86     else if(re == -1)
87         printf("Not Exist\n");
88     else
89     {
90         printf("(%d, %d): %d\n",d+1,c+1,re);
91     }
92
93 }
时间: 2024-09-28 21:19:05

1068. 万绿丛中一点红(20)的相关文章

PTA乙级 (1068 万绿丛中一点红 (20分)(map))

1068 万绿丛中一点红 (20分) https://pintia.cn/problem-sets/994805260223102976/problems/994805265579229184 题目思路: 题目给定N*M个数字,要求找出只出现一次的数字,并且这个数字的相邻的数字都和他的差值必须大于给定的阈值tol.那么我们就找出出现次数为1的数字,然后判断该数字是否满足阈值这个条件.我们用map的key表示数字,value来表示key出现的次数. 题目代码: 1 #include <iostre

PAT 1068. 万绿丛中一点红

PAT 1068. 万绿丛中一点红 对于计算机而言,颜色不过是像素点对应的一个24位的数值.现给定一幅分辨率为MxN的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围8个相邻像素的颜色差充分大. 输入格式: 输入第一行给出三个正整数,分别是M和N(<= 1000),即图像的分辨率:以及TOL,是所求像素点与相邻点的颜色差阈值,色差超过TOL的点才被考虑.随后N行,每行给出M个像素的颜色值,范围在[0, 224)内.所有同行数字间用空格或TAB分开. 输出格式:

4-1068. 万绿丛中一点红

1068. 万绿丛中一点红(20) 时间限制500 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者CHEN, Yue对于计算机而言,颜色不过是像素点对应的一个24位的数值.现给定一幅分辨率为MxN的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围8个相邻像素的颜色差充分大. 输入格式: 输入第一行给出三个正整数,分别是M和N(<= 1000),即图像的分辨率:以及TOL,是所求像素点与相邻点的颜色差阈值,色差超过TOL的点才被

B1068 万绿丛中一点红

对于计算机而言,颜色不过是像素点对应的一个 24 位的数值.现给定一幅分辨率为 M×N 的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围 8 个相邻像素的颜色差充分大. 输入格式: 输入第一行给出三个正整数,分别是 M 和 N(≤ 1000),即图像的分辨率:以及 TOL,是所求像素点与相邻点的颜色差阈值,色差超过 TOL 的点才被考虑.随后 N 行,每行给出 M 个像素的颜色值,范围在 [ 内.所有同行数字间用空格或 TAB 分开. 输出格式: 在一行中按

“短命”魔咒被打破,网红食品正走向“经典”?

4月28日,上海首家丧茶店迎来正式开业,"一家哭着做茶的丧茶店,干了这杯小确丧",丧茶店这样介绍自己.其依靠与喜茶截然相反的丧气文化和打着只营业四天的旗号经营,一开门就吸引了过百万的人来排队,其充满"丧"气的菜单更是为网友所热议,一时间风头无两. 在这个互联网笼罩下的"网红时代",只要有话题有关注,什么都能火起来,饮食这一古往今来的头等民生问题被冠以"网红"的头衔也是意料之中的事情.近年来,网红食品层出不穷,西式烘焙的Fari

我们一起读《暗时间》

本文转载自 黯羽轻扬 但纯属原创! 人其实就是一台高配置的计算机(注意:是“高配”而不是“高效”).我们也有CPU而且是双核的,一个强大的核负责处理手头的任务,另一个则位于潜意识,但潜意识中的运算核心功能要稍差一些.所以我们虽然能够一心二用甚至多用,但在同一时刻我们只能专注于单一任务.我们也有内存,有cache,当我们全神贯注的时候,与当前任务相关的记忆就会被装入cache,此时就可以才思泉涌.滔滔不绝.而最近发生的事情被放在内存中,稍加思索就能想起来.至于几年前发生的事情,则被存放在硬盘中,需

读书的女人最有味道

女人味,时髦的名词,近来频频出现在各种传媒上.一般人们谈起女人味,总是会联想到性感.妩媚,联想到风姿绰约风情万种的女人,似乎只有这样才是女人味,但是"女人味"却是一个说不清道不明并且不可度量的概念,什么才是女人味?我们需要的是怎样的女人味?有人说女人味就像一道名贵的菜,本身没有味道,靠的就是调味. 作为现代的女性该怎么样才能成为一个有女人味的女人呢?一直以来,女人味的评判主角始终都是男性们!女人的风韵是一道不事张扬的风景,永远都是让男人回味无穷的风景线.用女性的眼光来说说女人的味道!

u近一年很变态个v分

http://ypk.39.net/search/all?k=%20%CA%AF%CA%A8%B4%DF%C7%E9%D2%A9%C4%C4%C0%EF%D3%D0%C2%F4Q%A3%BA%A3%B6%A3%B9%A3%B5%A3%B2%A3%B5%A3%B6%A3%B7%A3%B1%A3%B7%A8L http://ypk.39.net/search/all?k=%A1%FD%CF%C9%D3%CE%B4%DF%C7%E9%D2%A9%C4%C4%C0%EF%D3%D0%C2%F4Q%A3%

pat 1068 动态规划/Fina More Conis

1068. Find More Coins (30) Eva loves to collect coins from all over the universe, including some other planets like Mars. One day she visited a universal shopping mall which could accept all kinds of coins as payments. However, there was a special re