pat1068

2023-05-16

 

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

输入格式:

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

用二维数组存储输入N行M列的像素值。

对像素是否是唯一的可以利用map 将元素值和其出现的次数对应映射,在输入的像素的时候,如果出现重复像素值,则对应像素的键值++。

再利用for循环依次遍历每一个像素值,如果该像素是唯一的并且与周围的8个元素相差绝对值大于TOL,则将计数器加一,并且用两个整数记录对应的坐标x,y。

如果计数器为0则不存在,如果计数器为1输出x、y、像素值。否则输出不唯一。

以下为源代码:

#include<bits/stdc++.h>
using namespace std;
const int dr[] = {1,-1,0,0,1,1,-1,-1};//下 上 右 左 右上 右下 左上 左下
const int dc[] = {0,0,1,-1,1,-1,1,-1};
int a[1001][1001];
map<int,int> rs;
int M,N,TOL;
bool judge(int r,int c) {
    for(int i = 0; i < 8; ++i) {
        int nx = r+dr[i], ny = c+dc[i];
        if(nx < 0 || nx >= M || ny < 0 || ny >= N) continue;
        if(abs(a[nx][ny]-a[r][c])<=TOL) return false;
    }
    return true;
}
int main(){
    //freopen("test.txt","r",stdin);
    cin>>N>>M>>TOL;
    for(int i=0;i<M;i++){
        for(int j=0;j<N;j++){
            cin>>a[i][j];
            rs[a[i][j]]++; 
        }
    }//初始化图像 
    
    int x,y=0;
    int cnt=0;
    for(int i=0;i<M;i++){
        for(int j=0;j<N;j++){
            int data=a[i][j];
            if(rs[data]==1&&judge(i,j)){//边界判断!
                x=i;
                y=j;
                cnt++; 
            }
        }
    }

     if(cnt==0) cout<<"Not Exist"<<endl;
     else if(cnt==1)
            cout<<"("<<y+1<<", "<<x+1<<")"<<": "<<a[x][y]<<endl;
        else{
            cout<<"Not Unique"<<endl;
        }
}

 

关键点

利用map去过滤不唯一的像素值。

因为只需要输出一个坐标点,所以只需要用两个整形变量去存储坐标值,而不需要去纠结其他点的坐标如何存储。

judge函数  构建遍历数组增值。依次从下 上 右 左 右上 右下 左上 左下方向去取元素与中心元素进行对比。

利用计数器判断满足结果的点的个数。

.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pat1068 的相关文章

  • 阿里域名+腾讯云服务器组合部署网站

    前段时间 xff0c 我在阿里云上购买了一个域名 本想着也在阿里云上购买一台入门级服务器先玩玩 xff0c 但是在看完一系列的产品后 xff0c 还是放弃了阿里云的服务器 对比几家之后还是选择了腾讯云 xff0c 接下来 xff0c 就是踩
  • 解决spring security登出时会由https重定向为http

    我们在集成spring security框架时 xff0c 默认的登出会走一次重定向login logout xff0c 这是如果发布到生产环境 xff0c 则会登出有问题 具体报错就是说由https和http混用访问资源的错误 xff0c
  • docker安装kafka,并集成springboot进行测试

    大家好 xff0c 今天我们开始学习kafka中间件 xff0c 今天我们改变一下策略 xff0c 不刷视频学习 xff0c 改为实践学习 xff0c 在网上找一些案例功能去做 xff0c 来达到学习实践的目的 首先 xff0c 是安装相关
  • springboot集成kafka的相关配置及自定义

    之前的文章末尾 xff0c 简单的实现了springboot集成kafka xff0c 完成了简单的测试 xff0c 今天我们来扩展一下相关内容 首先详解一下配置文件的内容 xff1a spring kafka 指定 kafka 地址 xf
  • sql查询一个表不包含另一个表的数据,两种方法。

    1 用minus函数的方式 xff1a select from CMN FUND where FUND CODE in select FUND CODE from CMN FUND minus select FUND CODE from C
  • js控制输入框禁止输入和允许输入

    初始 xff0c 部分输入框禁止输入 xff1a document ready function 34 fundCode 34 prop 34 disabled 34 true 34 convertFundCode 34 prop 34 d
  • jsp页面内嵌另一个jsp公共页面

    在开发过程中 xff0c 有些功能是一直可以重复使用的 xff0c 这样的页面我们可以做成公共的 xff0c 供每个页面适用 xff0c 那么就需要我们在使用的时候做一下嵌套 例如 xff1a 这样一个页面中 xff1a 上半部分是公共的
  • Go语言入门

    原文地址 xff1a 嗨客网 Go语言入门 Go语言入门教程 很多人将 Go 语言 称为 21 世纪的 C 语言 xff0c 因为 Go 不仅拥有 C 语言的简洁和性能 xff0c 而且还很好的提供了 21 世纪互联网环境下服务端开发的各种
  • Docker学习十:Docker Swarm

    一 Swarm介绍 Swarm 是 Docker 官方推出的容器集群管理工具 xff0c 最大的优势之一就是原生支持 Docker API xff0c 原来的 Docker 用户可以很方便地将服务迁移到 Swarm 中来 Swarm 还内置
  • golang 调用rust_通过从JavaScript调用Rust来构建和扩充库

    golang 调用rust 在为什么要在WebAssembly中使用Rust xff1f xff0c 我探讨了为什么您可能要编写WebAssembly xff08 Wasm xff09 xff0c 以及为什么您可能会选择Rust作为语言来编
  • Python实现天气查询源码_复制可执行,可用

    Python天气查询源码 本文爬去的是通过 Python3 中国天气网数据 xff0c 包含查询城市十五天的天气情况及今明两天的生活指数 本文实现查询有两个 py文件 xff08 city py weather py xff09 注 xff
  • PyMol入门1

    PyMol和Chimera的功能类似 xff0c 据说Chimera难学一点 xff0c 那就先从PyMol开始吧 xff01 1 Wizard demo 先了解PyMol可以展示什么 Wizard demo representations
  • wsl中rosetta的安装(Ubuntu20.04)

    安装rosetta需要提前安装许多依赖 由于笔者第一次用子系统安装rosetta xff0c 本来就没怎么用过ubuntu xff0c 这次就更抓瞎了 下面把踩过的坑记录一下 其实安装rosetta的过程不是很复杂 需要以下装备 xff1a
  • wsl子系统Ubuntu20.04中FoldX的安装

    想试试看foldx能不能用来计算结合自由能 xff0c 于是开始安装 下载地址 xff0c 官网 先注册账号 xff0c 学术免费版 xff0c 很简单 xff0c 不做赘述 Homepage FoldX tar zxvf解压 xff0c
  • wsl子系统ubuntu20.04安装gromacs

    安装GMX教程 https manual gromacs org documentation current install guide index html https blog csdn net weixin 38412284 arti
  • 如何在Ubuntu20.04上安装RDP远程

    计算机最有意思的事情 xff0c 就是你可以用任何方式去实现跨设备连接 例如google通过webrtc实现远程桌面 xff0c Linux则是常用ssh等 在远程桌面上一般分为windows的RDP和Unix Linux的VNC 常规在w
  • 通信承载网络知识点TDM、WDM、SDH、MSTP、SPN、M-OTN

    通信承载网络知识点 TDM 时分复用 xff0c 将一个标准时长 xff08 1秒 xff09 分成若干段小的时间段 xff08 8000 xff09 xff0c 每一个小时间段 xff08 1 8000 61 125us xff09 传输
  • Idea——Hadoop3.2.1版idea插件安装超详细版

    一 为什么是Idea 最近需要安装IDE插件方便Hadoop开发 xff0c 找了一下github上eclipse hadoop plugins没发现有3 2 1版本的 xff0c 所以就安装的HadoopIntellijPlugin插件了
  • Pycharm连接远程服务器并实现文件上传同步

    1 打开本地pycharm xff0c 点击tools Deployment Configuration 进行配置 2 点击左侧的 43 xff0c 填写连接名称 xff08 自定义 xff0c 随你心情怎么写 xff09 3 填写配置 T

随机推荐