算法

算法训练 大小写转换

£可爱£侵袭症+ 提交于 2020-02-12 04:30:22
算法训练 大小写转换 时间限制:1.0s 内存限制:512.0MB 问题描述   编写一个程序,输入一个字符串(长度不超过20),然后把这个字符串内的每一个字符进行大小写变换,即将大写字母变成小写,小写字母变成大写,然后把这个新的字符串输出。   输入格式:输入一个字符串,而且这个字符串当中只包含英文字母,不包含其他类型的字符,也没有空格。   输出格式:输出经过转换后的字符串。   输入输出样例 样例输入 AeDb 样例输出 aEdB #include<iostream> #include<cstdio> #include<cstring> using namespace std; char s[50]; int main() { int i,len; while(~scanf("%s",s)) { len=strlen(s); for(i=0;i<len;i++) { if(s[i]>='a'&&s[i]<='z') s[i]=s[i]-32; else s[i]=s[i]+32; } printf("%s\n",s); } return 0; } 来源: https://www.cnblogs.com/cancangood/p/4354407.html

python图像灰度化算法

天涯浪子 提交于 2020-02-12 02:06:11
灰度图片就是R=G=B=Gray 算法一: 图片R、G、B三个颜色取均值 import cv2 import numpy as np img = cv2 . imread ( 'image0.jpg' , 1 ) imgInfo = img . shape height = imgInfo [ 0 ] width = imgInfo [ 1 ] dst = np . zeros ( ( height , width , 3 ) , np . uint8 ) #unit8 0-255 for i in range ( 0 , height ) for j in range ( width ) ( b , g , r ) = img [ i , j ] gray = ( int ( b ) + int ( g ) + int ( r ) ) dst [ i , j ] = np . unit8 ( grap ) cv2 . imshow ( 'dst' , dst ) cv2 . waitKey ( 0 ) 算法二 gray = r 0.299 + g 0.587 + b+0.114 import cv2 import numpy as np img = cv2 . imread ( 'image0.jpg' , 1 ) imgInfo = img . shape height =

随机采样方法整理与讲解(MCMC、Gibbs Sampling等)

拟墨画扇 提交于 2020-02-11 20:02:39
http://www.tuicool.com/articles/fqEf6f 本文是对参考资料中多篇关于sampling的内容进行总结+搬运,方便以后自己翻阅。其实参考资料中的资料写的比我好,大家可以看一下!好东西多分享!PRML的第11章也是sampling,有时间后面写到PRML的笔记中去:) 背景 随机模拟也可以叫做蒙特卡罗模拟(Monte Carlo Simulation)。这个方法的发展始于20世纪40年代,和原子弹制造的曼哈顿计划密切相关,当时的几个大牛,包括乌拉姆、冯.诺依曼、费米、费曼、Nicholas Metropolis, 在美国洛斯阿拉莫斯国家实验室研究裂变物质的中子连锁反应的时候,开始使用统计模拟的方法,并在最早的计算机上进行编程实现。[3] 随机模拟中有一个重要的问题就是给定一个概率分布 p ( x ) ,我们如何在计算机中生成它的样本。一般而言均匀分布 U n i f o r m ( 0 , 1 ) 的样本是相对容易生成的。 通过线性同余发生器可以生成伪随机数,我们用确定性算法生成 [ 0 , 1 ] 之间的伪随机数序列后,这些序列的各种统计指标和均匀分布 U n i f o r m ( 0 , 1 ) 的理论计算结果非常接近。这样的伪随机序列就有比较好的统计性质,可以被当成真实的随机数使用。 下面总结这么几点: 1、蒙特卡洛数值积分 2、均匀分布

数据结构与算法

我怕爱的太早我们不能终老 提交于 2020-02-11 19:30:29
1 重要思想: 升维 时间换空间的思想 链表 —> 跳表(增加多级索引) 跳表查询时间:0 ( logn ) 来源: https://www.cnblogs.com/terrycode/p/12295850.html

小白入门!提升代码能力!【算法】入门篇(1)—— 入门模拟

≯℡__Kan透↙ 提交于 2020-02-11 19:02:21
写在前面: 大家好,我是贝贝。昵称 "贝贝今天AC了吗" 是为了督促自己码题,相信圈子里的大家伙都懂喇。我热爱技术、热爱开源、热爱编程。 我始终相信: 技术是开源的,知识是共享的。 博客内均是我平常学习的总结,在便于自己往后回顾之余,也希望向大家分享知识。 每篇文章我都是负责任地总结着,相信您看几篇文章就会发现我的 乖巧 。 目前在总结比较基础入门的知识。如果喜欢,不妨关注,我们一起成长。 做最乖巧的博客er,做最扎实的程序员。 🔺 首先,希望大家对算法有一个基本的了解: 算法是一切程序设计的灵魂和基础。 很多开发者都知道 " 程序 = 数据结构 + 算法" 这个著名的公式。 什么是算法? 字面含义: 算法是用于计算的方法,通过这种方法可以达到预期的计算结果。 其它专家说 : 算法是解决实际问题的一种精确描述方法、算法是对特定问题的求解步骤的一种精确描述方法。 广泛定义: 算法是模型分析的一组可行的、确定的和有穷的规则。 通俗的讲: 算法可以理解为一个完整的解题步骤,由一些基本运算和规定的运算顺序构成。 🔺 其次,算法的学习是十分重要的,不管你是刚入门的学习者,还是即将应聘的程序员,或是在大厂的工作者。只是对不不同层次的学习者的要求不同而已。算法遍布在程序设计的方方面面,平常简单算法的学习一般可以通过做算法题来考察。 本文是针对学习且掌握完一门编程语言(可能大部分人都是c语言)后,

无刷直流电机学习笔记9

五迷三道 提交于 2020-02-11 18:34:52
一、内容 本期的学习内容主要是对PMSM有霍尔传感器和无霍尔传感器部分的程序进行比较性学习,其目的在于慢慢的实现有传感器到无传感器的学习过渡,并结合所学的算法原理,初步的理解无霍尔程序。 二、知识点 FOC矢量控制图下图所示,从图中我们可以看出一个FOC矢量控制的一个基本模型,而就PMSM有霍尔传感器和无霍尔传感器在FOC矢量控制原理上来说,主要的区别在于转子速度/位置反馈上面,前者是通过电机的霍尔元件发送的信号来判断当前电机运动的状态,检测到转子的位置,然后控制器根据霍尔所采集的信号再控制控制器的输出来给电机供电,让电机持续正常的工作。而后者则是通过相关的算法,由计算得出转子的速度和位置,以实现控制效果。 首先,根据所学的《现代永磁同步电机控制原理及MATLAB仿真》一书中所写的转子速度和检测算法,大致可以分成括滑模观测器算法、模型参考自适应控制算法、扩展卡尔曼滤波器算法三种,其中,滑模观测器算法随着研究的深入,可分为传统清模观测器算法、自适应清模观测器算法和同步旋转坐标系下滑模观测器算法三种。其各自的特点如图所示。 而在所给的PMSM无传感器程序中,首先,通过学习了解到有霍尔传感器和无霍尔传感器的程序主体上具有相似性,在程序上主要的区别之处在于程序中转子速度和位置检测模式的选择,具体代码如下所示: # ifdef ENCODER // ENC_Init(); # ifdef

网摘-HTTPS协议之通信加密过程分析

ぐ巨炮叔叔 提交于 2020-02-11 17:03:43
原文链接: https://www.jianshu.com/p/39ad3e40f7af 备份如下: HTTPS协议之通信加密过程分析 一、准备知识 在开始介绍前,需要首先了解一下消息摘要、数字签名、数字证书的知识 1、消息摘要 - Message Digest 消息摘要(Message Digest) ,又称数字摘要(Digital Digest)或数字指纹(Finger Print)。简单来说,消息摘要就是在消息数据上,执行一个单向的Hash函数,生成一个固定长度的Hash值,这个Hash值即是消息摘要,Hash算法有MD5,SHA。它有以下特征: 无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。例如应用MD5算法摘要的消息有128个比特位,用SHA-1算法摘要的消息最终有160比特位的输出,SHA-1的变体可以产生192比特位和256比特位的消息摘要。一般认为,摘要的最终输出越长,该摘要算法就越安全。 消息摘要看起来是“随机的”。这些比特看上去是胡乱的杂凑在一起的。可以用大量的输入来检验其输出是否相同,一般,不同的输入会有不同的输出,而且输出的摘要消息可以通过随机性检验。但是,一个摘要并不是真正随机的,因为用相同的算法对相同的消息求两次摘要,其结果必然相同;而若是真正随机的,则无论如何都是无法重现的。因此消息摘要是“伪随机的”。 消息摘要函数是单向函数

页面置换算法之Clock算法

落花浮王杯 提交于 2020-02-11 17:03:33
1.前言 缓冲池是数据库最终的概念,数据库可以将一部分数据页放在内存中形成缓冲池,当需要一个数据页时,首先检查内存中的缓冲池是否有这个页面,如果有则直接命中返回,没有则从磁盘中读取这一页,然后缓存到内存并返回。 但是内存的价值较高,一般来说服务器的内存总是小于磁盘大小的,而且内存不能完全分配给数据库作为缓冲池。这就意味着数据库基本上无法将所有的数据都缓冲到内存中。 当缓冲池满后,如果还有新的页面要被缓冲到池中,就要设计一种页面置换的算法,将一个旧的页面替换成新的页面。 一般来说我们熟悉的算法有下面几种: 下面逐一介绍各种算法。 2. 最佳置换算法 如果被替换掉的页是以后再也不会使用的,那么这种算法无疑是最优秀的。因为不管什么算法,替换掉的页也有可能再次被缓存,替换掉其它的页。 但是这种算法是无法实现的,我们不可能知道哪个页面以后也在不会被使用。 或者我们退一步,将这个算法改成被替换掉的页是以后很长一段时间都不会再次被使用的,那么这种算法无疑也是最优秀的。 但是还是会面对一个无法实现的问题,我们还是不知道哪些页面会在未来多长一段时间内不会被再次访问。页面无法确认,时间也无法确定。 虽然这种算法无法被实现,但是可以作为一种度量,如果有一种算法其效率最接近OPT,那么这种算法无疑是优秀的算法。 3. 先进先出算法 先进先出算法是一种很简单的算法,其基本思想是形成一个队列

高并发系统中的限流算法

拈花ヽ惹草 提交于 2020-02-11 15:52:49
在高并发系统时有三把利器用来保护系统: 缓存、降级和限流 ,本文将介绍一些限流的相关概念、算法和常规的实现方式。 缓存 缓存比较好理解,在大型高并发系统中,如果没有缓存数据库将分分钟被爆,系统也会瞬间瘫痪,使用缓存不单单能够提升系统访问速度,提高并发访问量,也是保护数据库、保护系统的有效方式,大型网站一般主要是“读”,缓存的使用很容易被想到。 在大型“写”系统中,缓存也常常扮演非常重要的角色,比如累积一些数据批量写入,内存里面的缓存队列(生产消费),以及HBase写数据的机制等等也都是通过缓存提升系统的吞吐量或者实现系统的保护措施,甚至消息中间件,你也可以认为是一种分布式的数据缓存。 降级 服务降级是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放部分服务器资源以保证核心任务的正常运行。降级往往会指定不同的级别,面临不同的异常等级执行不同的处理。根据服务方式,可以拒绝服务,可以延迟服务,有时候也可以随机服务。 根据服务范围,可以砍掉某个功能,也可以砍掉某些模块。总之服务降级需要根据不同的业务需求采用不同的降级策略,主要目的就是服务虽然有损但是总比没有好。 限流 常见的限流算法有:计数器、漏桶和令牌桶算法。 1.计数器 计数器是最简单粗暴的算法,比如某个服务最多只能每秒钟处理100个请求,我们可以设置一个1秒钟的滑动窗口,窗口中有10个格子

Javascript算法和数据结构

谁都会走 提交于 2020-02-11 13:12:39
什么是算法和数据结构 数据结构:计算机中存储和组织数据的方式 算法:解决办法的逻辑/操作 数组 JS数组就是API的调用 栈 栈是受限的线性结构:(生活中类似于自助餐的托盘) 只能在一端添加/删除元素 (栈顶) 进入:进栈(压栈) 出去:出栈(退 栈) 函数调用栈 A调用B,B调C,C调D D,C,B,A的弹栈顺序 一个栈结构面试题 有6个元素 6,5,4,3,2,1的顺序进栈(要考虑到可以一边入栈一边出栈) 3,4,6,5,2,1不合法 4.使用数组实现栈 // Method:和某一个对象实例有关系 // function // 封装栈类 // 1.封装栈类 function Stack() { // 栈中的属性 this.items = [] // 栈的相关操作 // 1.将元素压入栈 // function push(this){ // } 这种方法添加方法不好,因为这样每一个new出来的对象都会有一个push实例,占用内存 Stack.prototype.push = function(element) { return this.items.push(element) } // 2.从栈顶中取出元素 Stack.prototype.pop = function() { return this.items.pop() } // 3.返回栈顶元素,仅仅返回 Stack