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

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

https://pintia.cn/problem-sets/994805260223102976/problems/994805265579229184

题目思路:

题目给定N*M个数字,要求找出只出现一次的数字,并且这个数字的相邻的数字都和他的差值必须大于给定的阈值tol。那么我们就找出出现次数为1的数字,然后判断该数字是否满足阈值这个条件。我们用map的key表示数字,value来表示key出现的次数。

题目代码:

 1 #include <iostream>
 2 #include <cmath>
 3 #include <algorithm>
 4 #include <cstdio>
 5 #include <cstring>
 6 #include <string>
 7 #include <map>
 8 using namespace std;
 9 int dir[8][2]={1,0,-1,0,0,1,0,-1,1,1,1,-1,-1,1,-1,-1};
10 int s[1002][1002];
11 map<int, int> vis;
12 int m,n,tol;
13 bool check(int x,int y)
14 {
15     for(int i=0;i<8;i++)
16     {
17         int xx=x+dir[i][0];
18         int yy=y+dir[i][1];
19         if(xx>=0&&xx<n&&yy>=0&&yy<m&&(abs(s[xx][yy]-s[x][y])<=tol)) return false;
20     }
21     return true;
22 }
23 int main()
24 {
25     cin>>m>>n>>tol;
26     for(int i=0;i<n;i++)
27     {
28         for(int j=0;j<m;j++)
29         {
30             cin>>s[i][j];
31             vis[s[i][j]]++;
32         }
33     }
34     int cnt=0,x,y;
35     for(int i=0;i<n;i++)
36     {
37         for(int j=0;j<m;j++)
38         {
39             if((vis[s[i][j]]==1)&&(check(i,j)))
40             {
41                 cnt++;
42                 x=i;
43                 y=j;
44             }
45         }
46     }
47     if(cnt==1) printf("(%d, %d): %d\n",y+1,x+1,s[x][y]);
48     else if(cnt>1) puts("Not Unique");
49     else if(cnt==0) puts("Not Exist");
50     return 0;
51 }

参考:https://blog.csdn.net/qq_34594236/article/details/63692920

原文地址:https://www.cnblogs.com/jianqiao123/p/12215018.html

时间: 2024-10-06 14:12:04

PTA乙级 (1068 万绿丛中一点红 (20分)(map))的相关文章

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

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

PAT 1068. 万绿丛中一点红

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

[PTA] PAT(A) 1008 Elevator (20 分)

目录 Problem Description Input Output Sample Sample Input Sample Output Solution Analysis Code Problem portal: 1008 Elevator (20 分) Description  The highest building in our city has only one elevator. A request list is made up with $N$ positive numbers

PAT乙级1072-----开学寄语 (20分)

1072 开学寄语 (20分) 输入样例: 4 2 2333 6666 CYLL 3 1234 2345 3456 U 4 9966 6666 8888 6666 GG 2 2333 7777 JJ 3 0012 6666 2333 输出样例: U: 6666 6666 GG: 2333 JJ: 6666 2333 3 5 思路:1.用数组下标表示违禁物品编号2.不满4位数要补0,例如:编号12输出时为0012 首次通过代码: 1 #include<stdio.h> 2 3 int main(

PTA——6-10 阶乘计算升级版 (20分)

题目地址 本题要求实现一个打印非负整数阶乘的函数. 函数接口定义: void Print_Factorial ( const int N ); 其中N是用户传入的参数,其值不超过1000.如果N是非负整数,则该函数必须在一行中打印出N!的值,否则打印“Invalid input”. 裁判测试程序样例: #include <stdio.h> void Print_Factorial ( const int N ); int main() { int N; scanf("%d"

PTA——6-1 单链表逆转 (20分)

题目地址 本题要求实现一个函数,将给定的单链表逆转. 函数接口定义: List Reverse( List L ); 其中List结构定义如下: typedef struct Node *PtrToNode; struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */ }; typedef PtrToNode List; /* 定义单链表类型 */ L是给定单链表,函数Reverse要返回被逆转后的链

4-1068. 万绿丛中一点红

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

PTA乙级 (1069 微博转发抽奖 (20分)(vector,map))

1069 微博转发抽奖 (20分) https://pintia.cn/problem-sets/994805260223102976/problems/994805265159798784 1.使用vector来保存输入的用户名. 2.使用map来进行筛选,记录用户是否已经中奖. 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cmath> 5 #in

PTA 乙级 1017 A除以B (20 分) C/C++

1017 A除以B (20 分) 本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数.你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立. 输入格式: 输入在一行中依次给出 A 和 B,中间以 1 空格分隔. 输出格式: 在一行中依次输出 Q 和 R,中间以 1 空格分隔. 输入样例: 123456789050987654321 7 输出样例: 17636684150141093474 3 1 #include<stdio.h> 2 #include&