MUL

[LeetCode] 241. Different Ways to Add Parentheses 添加括号的不同方式

倾然丶 夕夏残阳落幕 提交于 2020-11-24 09:36:51
Given a string of numbers and operators, return all possible results from computing all the different possible ways to group numbers and operators. The valid operators are + , - and * . Example 1 Input: "2-1-1" . ((2-1)-1) = 0 (2-(1-1)) = 2 Output: [0, 2] Example 2 Input: "2*3-4*5" (2*(3-(4*5))) = -34 ((2*3)-(4*5)) = -14 ((2*(3-4))*5) = -10 (2*((3-4)*5)) = -10 (((2*3)-4)*5) = 10 Output: [-34, -14, -10, -10, 10] 给定一个含有数字和运算符的表达式,运算符可以是加减乘,在任意位置添加括号,求出所有可能的表达式值。 解法:递归 Java: public class Solution { public List<Integer> diffWaysToCompute(String input) { List<Integer> result = new ArrayList<>(); if

浮点数运算的精度问题:以js语言为例

元气小坏坏 提交于 2020-11-19 04:31:31
在 JavaScript 中整数和浮点数都属于 Number 数据类型,所有数字都是以 64 位浮点数形式储存,即便整数也是如此。 所以我们在打印 1.00 这样的浮点数的结果是 1 而非 1.00 。在一些特殊的数值表示中,例如金额,这样看上去有点变扭,但是至少值是正确了。然而要命的是,当浮点数做数学运算的时候,你经常会发现一些问题,举几个例子: // 加法 ===================== // 0.1 + 0.2 = 0.30000000000000004 // 0.7 + 0.1 = 0.7999999999999999 // 0.2 + 0.4 = 0.6000000000000001 // 2.22 + 0.1 = 2.3200000000000003 // 减法 ===================== // 1.5 - 1.2 = 0.30000000000000004 // 0.3 - 0.2 = 0.09999999999999998 // 乘法 ===================== // 19.9 * 100 = 1989.9999999999998 // 19.9 * 10 * 10 = 1990 // 1306377.64 * 100 = 130637763.99999999 // 1306377.64 * 10 * 10 =

SSE图像算法优化系列二十六:和时间赛跑之优化高斯金字塔建立的计算过程。

筅森魡賤 提交于 2020-11-08 13:32:39
  图像金字塔技术在很多层面上都有着广泛的应用,很多开源的工具也都有对他们的建立写了专门的函数,比如IPP,比如OpenCV等等,这方面的理论文章特别多,我不需要赘述,但是我发现大部多分开源的代码的实现都不是严格意义上的金字塔,而是做了一定的变通,这种变通常常为了快捷的实现类似的效果,虽然这种变通不太会影响金字塔的效果,但是我这里希望从严格意义上对该算法进行优化,比如简要贴一下下面的某个高斯金字塔的代码: public static Mat[] build(Mat img, int level) { Mat[] gaussPyr = new Mat[level]; Mat mask = filterMask(img); Mat tmp = new Mat(); Imgproc.filter2D(img, tmp, -1 , mask); gaussPyr[ 0] = tmp.clone(); Mat tmpImg = img.clone(); for ( int i = 1; i < level; i++ ) { // resize image Imgproc.resize(tmpImg, tmpImg, new Size(), 0.5, 0.5 , Imgproc.INTER_LINEAR); // blur image tmp = new Mat(); Imgproc

Python经典习题100例(附PDF下载地址)

青春壹個敷衍的年華 提交于 2020-11-01 20:30:48
pk哥肝了一个月,从两本书《Python基础教程(第3版)》和《流畅的Python》里把知识点进行了汇总,整理成了 100 道 Python习题, Python 100题我已经整理成了 PDF 文档,需要文档的可以关注下方公众号「Python知识圈」并回复:“ 100 ” 获取文档。 关注后回复:“ 100 ” 获取 pdf 文档 作者:pk哥 公众号:Python知识圈 Python基础习题 怎么计算2的3次方 解法1:直接用运算符 ** >>> 2**3 8 解法2:用函数 pow >>> pow(2,3) 8 怎么找出序列中的最大最小值? 用内置函数 max 和 min >>> l = (123, 888, 666) >>> max(l) 888 >>> min(l) 123 怎么将字符列表转为字符串 用 join 方法,合并序列的元素 >>> l = [ 'Python' , 'Circle' , 'is' , 'ok' ] >>> j = ' ' .join(l) >>> j 'Python Circle is ok' 怎么快速打印出包含所有 ASCII 字母(大写和小写)的字符串 用 string 模块的方法 >>> import string >>> string.ascii_letters

SSE图像算法优化系列二十四: 基于形态学的图像后期抗锯齿算法--MLAA优化研究。

与世无争的帅哥 提交于 2020-10-26 21:32:57
偶尔看到这样的一个算法,觉得还是蛮有意思的,花了将近10天多的时间研究了下相关代码。 以下为百度的结果:MLAA全称Morphological Antialiasing,意为形态 抗锯齿 是AMD推出的完全基于CPU处理的 抗锯齿 解决方案。对于游戏厂商使用的MSAA 抗锯齿 技术不同,Intel最新推出的MLAA将跨越边缘像素的前景和背景色进行混合,用第2种颜色来填充该像素,从而更有效地改进图像边缘的变现效果,这就是MLAA技术。   其实就是这个是由Intel的工程师先于2009年提出的技术,但是由AMD将其发发扬光大。   整个算法的渲染工作全部是交给 CPU 来完成,在这里GPU的作用只是将最终渲染出来的画面传给显示器。所以这项技术最大的优势是可以让GPU不再承担 抗锯齿 的工作,大大降低GPU在运行3D游戏时的压力。相对于以前的 抗锯齿 技术,MLAA采用Post-filtering(后滤波)机制,好处就在于可以按照颜色是否连续来驱动抗锯齿,而以前只能在初始边缘来抗锯齿。   也就是说这项技术可以在后期来修补那些由锯齿的图,因此我们可以想到其另外一些用处,后续会对这方面进行一个简单的扩展。    如上面两图,左侧图中树叶的边缘有明显的锯齿状图像,而右侧为经过MLAA算法处理后的图,边缘光滑了许多,而且其他部位未受任何的画质影响。   关于这方面的论文和资料主要有

爱了爱了,这篇寄存器讲的有点意思

◇◆丶佛笑我妖孽 提交于 2020-10-25 12:56:12
Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 作者丨cxuan 来源丨程序员cxuan 下面我们就来介绍一下关于寄存器的相关内容。我们知道, 寄存器 是 CPU 内部的构造,它主要用于信息的存储。除此之外,CPU 内部还有 运算器 ,负责处理数据; 控制器 控制其他组件; 外部总线 连接 CPU 和各种部件,进行数据传输; 内部总线 负责 CPU 内部各种组件的数据处理。 那么对于我们所了解的汇编语言来说,我们的主要关注点就是 寄存器 。 为什么会出现寄存器?因为我们知道,程序在内存中装载,由 CPU 来运行,CPU 的主要职责就是用来处理数据。那么这个过程势必涉及到从存储器中读取和写入数据,因为它涉及通过控制总线发送数据请求并进入存储器存储单元,通过同一通道获取数据,这个过程非常的繁琐并且会涉及到大量的内存占用,而且有一些常用的内存页存在,其实是没有必要的,因此出现了寄存器,存储在 CPU 内部。 认识寄存器 寄存器的官方叫法有很多,Wiki 上面的叫法是 Processing Register , 也可以称为 CPU Register ,计算机中经常有一个东西多种叫法的情况,反正你知道都说的是寄存器就可以了。 认识寄存器之前,我们首先先来看一下 CPU 内部的构造。 CPU

计算机组成原理——指令周期的数据流

可紊 提交于 2020-10-24 21:07:46
一、基本概念 指令周期:取出并执行一条指令所需要的时间(解释一条指令所需要的时间) 每条指令的指令周期不同 有些指令周期就没有执行周期——例如空操作(NOP) 有些指令的取指周期和执行周期是等长的——add mem 有些指令的执行周期就比较长——mul mem 具有间址寻址的指令周期 因为寻址方式的不同,可能是间址寻址,所以在执行周期中要取出操作数,需要进行两次访存,那么这个时候,如果我们将指令周期划分为:取址周期,间址周期,执行周期 那么,这个时候,间址周期执行的是将操作数的地址从主存中取出,执行周期执行的是取出操作数并执行相应的操作并把结果保存在给定的寄存器当中。 带中断的指令周期 如果程序执行的过程中有中断,那么就要添加一个中断周期:如果有中断请求的话,我们需要去响应中断:保存断电,形成中断服务程序的入口地址,硬件关中断 二、指令周期流程 在指令周期中,至少包含了1个周期:取址周期 在取址周期后,需要判断是否有间址周期,如果没有就进入到了执行周期,在执行周期过程中,需要判断有没有中断程序,如果有,就响应中断:保存断点,生成中断服务程序入口,硬件关断点;如果没有,就进入下一个取址周期 三、CPU工作周期的标志 由于处在不同的指令周期,控制器需要做不同的操作,所以控制器在指令周期的不同时段,需要发出不同的控制命令。控制器也要知道当前处于指令周期的哪一个阶段。 四、指令周期的数据流

计算机体系结构基础最近的知识点

烂漫一生 提交于 2020-10-09 06:09:21
我是小康小白,一个平平无奇的Java小白。热爱有趣的文字,生活和远方。 个人博客:https://blog.csdn.net/weixin_45791445 有问题欢迎QQ联系:1059320343 (记得备注CSDN) 1. 常见通用计算机系统的四大层次以及连接层次之间的界面: 第 一 章 的 介 绍 : 第一章的介绍: 第 一 章 的 介 绍 : 应用系统, —>应用程序编程接口API(生态建设的起点) 操作系统, —>指令系统ISA(生态建设的终点) 硬件系统, —>工艺模型 晶体管 补充:在API和ISA中间还有一层应用程序二进制接口(ABI)。ABI是应用程序访问计算机硬件以及操作系统服务的接口。 第 二 章 的 介 绍 : ( 从 用 户 感 知 的 应 用 软 件 到 最 底 层 的 物 理 载 体 ) 第二章的介绍:(从用户感知的应用软件到最底层的物理载体) 第 二 章 的 介 绍 : ( 从 用 户 感 知 的 应 用 软 件 到 最 底 层 的 物 理 载 体 ) 应用软件 基础软件 硬件逻辑 物理载体 指令系统介于软件和硬件之间,是软硬件交互的界面。 2. MIPS指令系统: 调试模式 根模式 核心模式 监管模式(很少使用) 用户模式 客户模式 核心模式 监管模式(很少使用) 用户模式 根-核心模式和调试模式可以控制所有的处理器资源, 根-用户模式和客户

汇编程序设计与计算机体系结构软件工程师教程笔记:指令

♀尐吖头ヾ 提交于 2020-10-08 02:27:22
《汇编程序设计与计算机体系结构: 软件工程师教程》这本书是由Brain R.Hall和Kevin J.Slonka著,由爱飞翔译。中文版是2019年出版的。个人感觉这本书真不错,书中介绍了三种汇编器GAS、NASM、MASM异同,全部示例代码都放在了GitHub上,包括x86和x86_64,并且给出了较多的网络参考资料链接。这里只摘记了NASM和MASM,测试代码仅支持Windows和Linux的x86_64。 4. 基本指令 4.1 简介: 在很多情况下,MASM会根据上下文来推测指令中的操作数是什么类型,有的时候NASM也是这样。 在撰写指令的目标操作数时,如果要对变量解引用 (dereference) ,NASM 要求你必须指出大小 ,也就是必须在变量名的前面写上一个表示尺寸的命令,例如用BYTE表示字节、WORD表示字等,比方说像这样:”mov DWORD [test], eax” 4.2 数据的移动与算术运算: MOV指令有几条具体的要求: (1). 两个操作数的大小必须相同; (2). 两个操作数不能全是内存操作数(也就是说要想在两个内存操作数之间移动数据,必须用寄存器做中介); (3). 指令指针寄存器(ip/eip/rip)不能用作目标操作数。 使用XCHG指令可令两个位置上的数据彼此交换。和MOV指令类似,XCHG指令的两个操作数也不能全都是内存操作数。

基于stm32f103c8t6浊度计

别来无恙 提交于 2020-10-01 20:57:39
基于stm32f103c8t6浊度计 前言 本次设计的基于stm32f103c8t6浊度计主要由硬件部分加软件部分组成 硬件部分主要是IR333光源发射部分+红外接收管光源接受部分+放大电路+stm32f103c8t6主控芯片+lcd1602显示模块组成 软件部分主要是通过stm32cubemx配置管脚之后添加adc通道函数、lcd1602写命令函数、lcd1602读数据函数等生成的 一、硬件部分 发射接收及放大电路硬件部分: LCD102显示硬件部分: 其中最主要的是信号放大电路,由于红外接收管接受的光信号过小,所以在他输入ad转换器之前必须进行信号的放大放大芯片可以选用LM324,部分仿真图如下图所示: 二、软件部分(主要函数块及总代码) 1.主函数部分 int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 / / MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /*