202212 CSP认证 | JPEG 解码

JPEG 解码
一道特别幸福简单的第三题…都不敢想象在考场上碰见这种题目会有多幸福。直接按照题目意思做就好了,感觉比第二题还简单…而且数组特别小完全没有超时压力
在这里插入图片描述

补充一个对小数处理的部分,包括本题涉及的四舍五入取整以及输出取整:C++ 实现四舍五入的几种方法

直接上满分代码

#include<bits/stdc++.h>
using namespace std;
const int N = 10;
const double pi = acos(-1);
int Q[N][N], M[N][N];
double M1[N][N];
vector<int> Data;//填充函数
void filling()
{int dir = 1;  //1是右上 0是左下int i = 0, j = 0;for(int k = 0;k < Data.size(); k ++){M[i][j] = Data[k];if(dir == 1){   //如果当前方向是右上方if(j == 7) {i ++; dir = 0;}  //触碰到右边界else if(i == 0) {j ++; dir = 0;}  //触碰到上边界else {i --; j ++; }}else{    //向左下方运动if(i == 7) {j ++; dir = 1;}  //触碰到下边界else if(j == 0) {i ++; dir = 1;} //触碰到左边界else {i ++; j --;}}}
}
//逐项相乘
void multiply()
{for(int i = 0;i < 8;i ++){for(int j = 0;j < 8;j ++){M[i][j] *= Q[i][j];}}
}
double alpha(int x)
{return x == 0 ? sqrt(0.5) : 1;
}
void change()
{for(int i = 0;i < 8;i ++){for(int j = 0;j < 8;j ++){double x = 0;double mul1 = (pi / 8) * (i + 0.5);  //对于每个i,j mul1和mul2是确定的,在循环外就算了double mul2 = (pi / 8) * (j + 0.5);for(int u = 0;u < 8;u ++){for(int v = 0;v < 8;v ++){x += alpha(u)*alpha(v)*M[u][v]*cos(mul1*u)*cos(mul2*v);}}x /= double(4);x = round(x + 128);x = x > 255 ? 255 : x;x = x < 0 ? 0 : x;M1[i][j] = x;}}
}
int main()
{int n, T;ios::sync_with_stdio(false);cin.tie(0);for(int i = 0;i < 8;i ++)for(int j = 0;j < 8;j ++)cin >> Q[i][j];cin >> n >> T;for(int i = 0;i < n; i ++){int x; cin >> x;Data.push_back(x);}if(T == 0) {filling();for(int i = 0;i < 8;i ++){for(int j = 0;j < 8;j ++){cout << M[i][j] << ' ';}cout << "\n";}}else if(T == 1){filling();multiply();for(int i = 0;i < 8;i ++){for(int j = 0;j < 8;j ++){cout << M[i][j] << ' ';}cout << "\n";}}else {filling();multiply();change();for(int i = 0;i < 8;i ++){for(int j = 0;j < 8;j ++){cout << M1[i][j] << ' ';}cout << "\n";}}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/753525.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

<sa8650>sa8650 partition-之-独立新增分区不加img

<sa8650>sa8650 partition-之-独立新增分区不加img 一、 前言二、准备条件三、添加新分区四、分区信息解析4.1 新增分区信息字段解析4.2 guid生成工具五、生成新的刷机文件六、替换刷机文件七、刷机验证八、总结九、参考文献<sa8650>sa8650 partition-之-非基线编译下新增分…

小迪安全42WEB攻防-通用漏洞文件包含LFIRFI伪协议

#知识点: 1、解释什么是文件包含 2、分类-本地LFI&远程RFI 3、利用-配合上传&日志&会话 4、利用-伪协议&编码&算法等 #核心知识: 1、本地包含LFI&远程包含RF1-区别 一个只能包含本地&#xff0c;一个可以远程加载 具体形成原因由代码和环境配置文件决定…

2024智慧农场系统微信小程序前端如何上传以及配置

2024智慧农场系统微信小程序前端如何上传以及配置 首先下载微信开发者工具 下载好以后打开&#xff0c;然后导入项目 前端修改&#xff1a;siteinfo.js 里面的域名信息 改完之后开始在微信开发者工具中开发工具中编译、上传、发布即可

【how2j练习题】HTML部分综合练习

练习题 1 <html><h1>英雄联盟 &#xff08;电子竞技类游戏&#xff09;</h1> <p> <strong>《英雄联盟》</strong>&#xff08;简称lol&#xff09;是由美国<i>Riot Games</i>开发&#xff0c;中国大陆地区由腾讯游戏运营的网络…

系统学习Python——装饰器:“私有“和“公有“属性案例-[在不同Python版本下的使用]

分类目录&#xff1a;《系统学习Python》总目录 对于通过名称显式调用的方法&#xff0c;文章《系统学习Python——装饰器&#xff1a;“私有“和“公有“属性案例-[使用伪私有、破坏私有和装饰器权衡]》中的示例在Python2.X和Python3.X下都能如期工作。然而和大多数软件一样&a…

软考78-上午题-【面向对象技术3-设计模式】-结构型设计模式01

一、适配器模式 1-1、意图 个类的接口转换成客户希望的另外一个接口。 Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 1-2、结构 适配器模式分为&#xff1a; 1、适配器类模式&#xff1b; 2、适配器对象模式 类适配器使用多重继承对一个接口与另…

时间序列中的离群值检测

时间序列中的离群值检测学习资料&#xff1a; Chapter 5 Outlier detection in Time series Anomaly Detection Techniques in Python A review on outlier/anomaly detection in time series data

goland设置保存文件时不将4个空格转为TAB

goland设置保存文件时不将4个空格转为TAB 版本&#xff1a;GoLand 2022.3 设置路径&#xff1a; Settings -> Editor -> Code Style -> Go -> Run gofmt图示&#xff1a;

理解数字证书,守护你的大数据世界

随着大数据时代的来临&#xff0c;信息的安全性和可靠性成为了公众和企业关注的焦点。在这样的背景下&#xff0c;数字证书作为一种保障信息安全的重要工具&#xff0c;其重要性日益凸显。本文将从数字证书的基本概念、工作原理及其在大数据时代的应用等方面&#xff0c;为大家…

数据库管理-第161期 数据库,走着瞧(20240318)

数据库管理161期 2024-03-18 数据库管理-第161期 数据库&#xff0c;走着瞧&#xff08;20240318&#xff09;MySQLSACC走着瞧RACAIOps 总结 数据库管理-第161期 数据库&#xff0c;走着瞧&#xff08;20240318&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海文&am…

面试算法-35-长度最小的子数组

题目 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续 子数组 [numsl, numsl1, …, numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0 。 示例 1&#xff1a; 输入…

HTML + CSS 核心知识点- 定位

简述&#xff1a; 补充固定定位也会脱离文档流、不会占据原先位置 1、什么是文档流 文档流是指HTML文档中元素排列的规律和顺序。在网页中&#xff0c;元素按照其在HTML文档中出现的顺序依次排列&#xff0c;这种排列方式被称为文档流。文档流决定了元素在页面上的位置和互相之…

QT进阶-----------认识QT相关的模块(第四天)

1、关于Visual Studio与QT Creator的不同导入方式 Visual Studio作为windows宇宙最强编辑器以及编译器&#xff0c;它相当的好用&#xff0c;作为一个学了一年QT的菜鸟&#xff0c;总结了一些关于VS以及QT Creator两者的不同。 首先&#xff0c;在VS中qt是作为第三方库导入到…

怎么做好独立站的SEO优化

随着全球贸易的蓬勃发展&#xff0c;越来越多的企业开始关注外贸市场&#xff0c;并将目光投向了外贸网站。然而&#xff0c;在竞争激烈的外贸市场中&#xff0c;如何写出吸引人的文章&#xff0c;以及如何优化网站以在搜索引擎中脱颖而出&#xff0c;成为了外贸独立网站必须面…

Python 求素数个数

要计算一个给定范围内素数的个数&#xff0c;你可以编写一个Python函数来遍历这个范围&#xff0c;并对每个数检查它是否是素数。下面是一个简单的例子&#xff0c;该函数计算从2到n&#xff08;包括n&#xff09;之间的素数个数&#xff1a; python复制代码 def count_primes…

机器学习-绪论

机器学习致力于研究如何通过计算的手段、利用经验来改善系统自身的性能。在计算机系统中&#xff0c;“经验”通常以“数据”的形式存在&#xff0c;因此&#xff0c;机器学习所研究的主要内容&#xff0c;是关于在计算机上从数据中产生“模型”的算法&#xff0c;即“学习算法…

2024西工大数据结构理论上机作业(头歌 C)持续更新中~

第二章 线性表 1 顺序表的插入运算 #include <stdio.h> #include <stdlib.h>typedef struct node {int val;struct node *next; } Node, List;List *init(void) {List *s (List*) malloc(sizeof(List));Node *tail s; int n;s->next NULL, s->val -1;s…

PHP<=7.4.21 Development Server源码泄露漏洞 例题

打开题目 dirsearch扫描发现存在shell.php 非预期解 访问shell.php&#xff0c;往下翻直接就看到了flag.. 正常解法 访问shell.php 看见php的版本是7.3.33 我们知道 PHP<7.4.21时通过php -S开起的WEB服务器存在源码泄露漏洞&#xff0c;可以将PHP文件作为静态文件直接输…

MultiButton

MultiButton MultiButton简介使用方法特性按键事件Examples 具体实现代码multi_button.cmulti_button.h MultiButton 简介 MultiButton 是一个小巧简单易用的事件驱动型按键驱动模块&#xff0c;可无限量扩展按键&#xff0c;按键事件的回调异步处理方式可以简化你的程序结构…

深入理解数据结构森林

文章目录 一、森林是什么二、森林的应用范围三、森林结构的MQL语言实现 一、森林是什么 数据结构中的"森林"是指多个树的集合。在树的概念中&#xff0c;每个节点可以有多个子节点&#xff0c;而在森林中&#xff0c;每个树都是独立的&#xff0c;没有共享的节点。换…