PAT 乙级 1068 万绿丛中一点红(20 分)
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.该像素一定是独一无二的
2.本题中有一测试例输入数量很大,所以使用cin时会导致运行超时,解决方法1.加上 ios::sync_with_stdio(false); 关闭cin cout的输入输出缓冲区加快输入输出效率,2.改用scanf输入
经测试只用cin 会超时,用scanf会过测试例,使用解决方法1更快
#include<iostream>
#include<cmath>
#include<map> using namespace std; int pixel[][];
int col, row, tol;
map<int, int> m;
int index[][] = { { -, - }, { , - }, { , - }, { -, }, { , }, { -, }, { , }, { , } }; bool judge(int i, int j)
{
for (int k = ; k < ; ++k)
{
int x = index[k][]+i, y = index[k][]+j; if (x >= && x<=row && y>= && y<=col && abs(pixel[i][j] - pixel[x][y]) <= tol)
return false;
} return true;
} int main()
{
//关闭输入输出流的缓冲区,加快cin cout的速度
ios::sync_with_stdio(false);
int pointNum = ;
int x, y;
cin >> col >> row >> tol; for (int i = ; i <= row; ++i)
for (int j = ; j <= col; ++j)
{
cin>> pixel[i][j];
++m[pixel[i][j]];
} for (int i = ; i <= row; ++i)
for (int j = ; j <= col; ++j)
{
if (m[pixel[i][j]] == && judge(i, j))
{
++pointNum;
x = i;
y = j; if (pointNum == )//后续无须再检查,结果必定是不唯一
{
cout << "Not Unique" << endl;
return ;
}
}
} if (pointNum == )
cout << "Not Exist" << endl;
else if (pointNum == )
cout << "(" << y << ", " << x << "): " << pixel[x][y] << endl; return ;
}
PAT 乙级 1068 万绿丛中一点红(20 分)的更多相关文章
- 1068 万绿丛中一点红 (20分)C语言
对于计算机而言,颜色不过是像素点对应的一个 24 位的数值.现给定一幅分辨率为 M×N 的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围 8 个相邻像素的颜色差充 ...
- PAT(B) 1068 万绿丛中一点红(C)
题目链接:1068 万绿丛中一点红 (20 point(s)) 参考博客:1068. 万绿丛中一点红(20) i逆天耗子丶 题目描述 对于计算机而言,颜色不过是像素点对应的一个 24 位的数值.现给定 ...
- PAT乙级:1088 三人行 (20分)
PAT乙级:1088 三人行 (20分) 题干 子曰:"三人行,必有我师焉.择其善者而从之,其不善者而改之." 本题给定甲.乙.丙三个人的能力值关系为:甲的能力值确定是 2 位正整 ...
- PAT乙级:1064 朋友数 (20分)
PAT乙级:1064 朋友数 (20分) 题干 如果两个整数各位数字的和是一样的,则被称为是"朋友数",而那个公共的和就是它们的"朋友证号".例如 123 和 ...
- PAT 1068. 万绿丛中一点红(20)
对于计算机而言,颜色不过是像素点对应的一个24位的数值.现给定一幅分辨率为MxN的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围8个相邻像素的颜色差充分大. 输入 ...
- PAT 1068 万绿丛中一点红(20)(测试点分析+思路分析)
1068 万绿丛中一点红(20 分) 对于计算机而言,颜色不过是像素点对应的一个 24 位的数值.现给定一幅分辨率为 M×N 的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的 ...
- PAT 乙级 1007. 素数对猜想 (20) c++ 筛选法求素数
PAT 乙级 1007. 素数对猜想 (20) c++ 筛选法求素数 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数 ...
- PAT 甲级 1035 Password (20 分)
1035 Password (20 分) To prepare for PAT, the judge sometimes has to generate random passwords for th ...
- [PAT] 1140 Look-and-say Sequence(20 分)
1140 Look-and-say Sequence(20 分)Look-and-say sequence is a sequence of integers as the following: D, ...
随机推荐
- PTA 6-12 (二叉树的递归删除)
BinTree Insert( BinTree BST, ElementType X ) { if (BST==NULL) { BinTree tmp=(BinTree)malloc(sizeof(s ...
- lvm创建 及 扩空 等相关
1.先对磁盘进行LVM 设置 2.pvcreate 物理卷的创建 pvcreate /dev/### 3.vgcreate 物理卷组的创建 vgcreate vg_name /dev/### ...
- 2017.5.10 MapReduce内部逻辑
MapReduce内部逻辑 Split:HDFS 中的数据以 Split 方式作为 MapReduce 的输入 Block 是 HDFS 术语,Split 是 MapReduce 术语 通常1个 Sp ...
- (12)模板语言-with
with的用处 当一个变量特别特别长,可以用with给这个变量重命名 views.py from django.shortcuts import render,HttpResponse def ind ...
- 可变,不可变类型和hash
可变与不可变类型 截止到目前为止我们已经学过很多数据类型:数字类型.字符串类型.列表类型.元祖类型. 在python中,我们对数据类型还有另外一种分类方式,我们给数据类型分为可变数据类型和不可变数据类 ...
- LeetCode - Boundary of Binary Tree
Given a binary tree, return the values of its boundary in anti-clockwise direction starting from roo ...
- golang-test-tool-gotests
gotests介绍 gotests是一个Golang命令行工具 ,让Go测试变得容易.它根据目标源文件的函数和方法签名生成表驱动的测试(TDD).任何测试文件中新的依赖都会被自动倒入 Demo 下面是 ...
- centos 7 lvs 负载均衡搭建部署
环境: 在vm里开三个虚拟机 负载调度器:10.0.3.102 真实服务器1:10.0.3.103 真实服务器2:10.0.3.104 虚拟ip: 10.0.3.99 (用来飘移) 负载调度器上 if ...
- masterlab 敏捷项目管理工具
masterlab 是一个参考了gitlab 以及jira 的开源项目管理工具,基于php开发,同时官方也提供了一个 docker-compose 运行的项目 clone 代码 git clone ...
- Gravitational Teleport 开源的通过ssh && kubernetes api 管理linux 服务器集群的网关
Gravitational Teleport 是一个开源的通过ssh && kubernetes api 管理linux 服务器集群的网关 支持以下功能: 基于证书的身份认证 ssh ...