当前位置: 首页 > news >正文

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 灰度图像恢复(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员

✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解

💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导

👏 感谢大家的订阅➕ 和 喜欢💗

📎在线评测链接

https://app5938.acapp.acwing.com.cn/contest/2/problem/OD1087

🌍 评测功能需要 ⇒ 订阅专栏 ⇐ 后私信联系清隆解锁~

🍓OJ题目截图

在这里插入图片描述

文章目录

    • 📎在线评测链接
    • 🍓OJ题目截图
    • 🎧 灰度图像恢复
      • 问题描述
      • 输入格式
      • 输出格式
      • 样例输入 1
      • 样例输出 1
      • 样例输入 2
      • 样例输出 2
      • 样例解释
      • 数据范围
      • 题解
      • 参考代码

🎧 灰度图像恢复

问题描述

在计算机中,黑白图像常采用灰度图的方式存储。每个像素填充一个灰阶值,范围为 0 − 255 0-255 0255,其中 0 0 0 表示全黑, 255 255 255 表示全白,其他值表示不同的灰度。为了节省存储空间,图像会使用压缩算法进行存储。

一种压缩算法的格式如下:

行数 列数 灰阶值1 连续像素个数1 灰阶值2 连续像素个数2 ...

其中,前两个数分别表示矩阵的行数和列数。从第三个数开始,每两个数一组,第一个数为灰阶值,第二个数表示该灰阶值从左到右、从上到下连续出现的像素个数。

给定压缩后的图像数据和一个像素位置,请恢复原始灰度图矩阵,并输出指定像素位置的灰阶值。

输入格式

第一行为压缩后的图像数据,格式如上所述。

第二行包含两个整数 r r r c c c,用空格分隔,表示要查询的像素位置的行号和列号。行号和列号从 0 0 0 开始计数。

输出格式

输出一个整数,表示指定像素位置的灰阶值。

样例输入 1

10 10 255 34 0 1 255 8 0 3 255 6 0 5 255 4 0 7 255 2 0 9 255 21
3 4

样例输出 1

0

样例输入 2

10 10 255 34 0 1 255 8 0 3 255 6 0 5 255 4 0 7 255 2 0 9 255 21
3 5

样例输出 2

255

样例解释

根据压缩数据恢复后的灰度图矩阵,在第一个样例中,第 3 3 3 行第 4 4 4 列的像素灰阶值为 0 0 0;在第二个样例中,第 3 3 3 行第 5 5 5 列的像素灰阶值为 255 255 255

数据范围

  • 图像大小不超过 100 × 100 100 \times 100 100×100
  • 压缩数据长度不超过 1 0 4 10^4 104

题解

根据压缩数据的格式,逐步恢复出原始的灰度图矩阵。遍历压缩数据,对于每一组灰阶值和连续像素个数,将对应的像素在矩阵中填充相应的灰阶值。最后输出指定位置的像素灰阶值即可。

参考代码

  • Python
def soln(data, r, c):rows, cols, *pixels = map(int, data.split())matrix = [[0] * cols for _ in range(rows)]x, y = 0, 0for i in range(0, len(pixels), 2):val, cnt = pixels[i], pixels[i+1]for _ in range(cnt):matrix[x][y] = valy += 1if y == cols:y = 0x += 1return matrix[r][c]data = input()
r, c = map(int, input().split())
print(soln(data, r, c))
  • Java
import java.util.Scanner;public class Main {public static int soln(String data, int r, int c) {Scanner scanner = new Scanner(data);int rows = scanner.nextInt();int cols = scanner.nextInt();int[][] matrix = new int[rows][cols];int x = 0, y = 0;while (scanner.hasNextInt()) {int val = scanner.nextInt();int cnt = scanner.nextInt();for (int i = 0; i < cnt; i++) {matrix[x][y++] = val;if (y == cols) {y = 0;x++;}}}return matrix[r][c];}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String data = scanner.nextLine();int r = scanner.nextInt();int c = scanner.nextInt();System.out.println(soln(data, r, c));}
}
  • Cpp
#include <iostream>
#include <vector>
#include <sstream>using namespace std;int soln(const string& data, int r, int c) {istringstream iss(data);int rows, cols;iss >> rows >> cols;vector<vector<int>> matrix(rows, vector<int>(cols, 0));int x = 0, y = 0;int val, cnt;while (iss >> val >> cnt) {for (int i = 0; i < cnt; i++) {matrix[x][y++] = val;if (y == cols) {y = 0;x++;}}}return matrix[r][c];
}int main() {string data;getline(cin, data);int r, c;cin >> r >> c;cout << soln(data, r, c) << endl;return 0;
}
http://www.lryc.cn/news/386547.html

相关文章:

  • leetcode494. 目标和
  • 数据结构简介
  • PyScript:在浏览器中释放Python的强大
  • 巴黎成为欧洲AI中心 大学开始输出AI创始人
  • 完全离线的本地问答模型LocalGPT如何实现无公网IP远程连接提问
  • 【算法专题--栈】栈的压入、弹出序列 -- 高频面试题(图文详解,小白一看就懂!!)
  • 如何高效安全的开展HPC数据传输,保护数据安全?
  • Java部分复习笔记整理
  • GoLang语言
  • ctfshow web入门 sqli-labs web517--web524
  • Spring Cloud Gateway 跨域配置和跨服务请求跟踪
  • 动手学深度学习(Pytorch版)代码实践 -卷积神经网络-29残差网络ResNet
  • 解锁音乐潮流:使用TikTok API获取平台音乐信息
  • 基于yolo的物体识别坐标转换
  • STM32第七课:KQM6600空气质量传感器
  • 任务4.8.4 利用Spark SQL实现分组排行榜
  • 五线谱与简谱有什么区别 五线谱简谱混排怎么打 吉他谱软件哪个好
  • [C#][opencvsharp]C#使用opencvsharp进行年龄和性别预测支持视频图片检测
  • pdf拆分,pdf拆分在线使用,pdf拆分多个pdf
  • VScode Python debug:hydra.run.dir 写入launch.json
  • ExVideo: 提升5倍性能-用于视频合成模型的新型后调谐方法
  • laravel Dcat Admin 入门应用(三)Grid 之 Column
  • 掌握Llama 2分词器:填充、提示格式及更多
  • pdf合并,pdf合并成一个pdf,pdf合并在线网页版
  • 算法基础--------【图论】
  • x86和x64架构的区别及应用
  • 2024年度总结:不可错过的隧道IP网站评估推荐
  • Linux下VSCode的安装和基本使用
  • C# 实现websocket双向通信
  • Spring Boot结合FFmpeg实现视频会议系统视频流处理与优化