程序设计的基本方法

2023-11-13

IPO模式

输入、处理(算法,是程序的灵魂)、输出

问题的计算部分

程序编写步骤

分析问题
确定问题
设计算法
编写实现
调试测试
升级维护

 

编程技巧之流程图

我们写的程序都是有逻辑顺序的,即是有流程的,流程图的作用则是对这种逻辑顺序的一种描述,是对解决问题的方法、思路或者算法的图形化的展示。

   

流程图采用的符号

 

 

Axure里的流程图形状组件面板

 

 

下面这的内容介绍来自(https://www.douban.com/note/310371289/)

 1、矩形

  作用:一般用作要执行的处理(process),在程序流程图中做执行框。

  在axure中如果是画页面框架图,那么也可以指代一个页面。有时候我们会把页面和执行命令放在同一个流程中做说明,这个时候将两类不同的矩形做色彩区别,然后做说明就好了。

  2、圆角矩形或者扁圆

  作用:表示程序的开始或者结束,在程序流程图中用作为起始框或者结束框。

  3、斜角矩形

   作用:斜角矩形平时几乎不使用,可以视情况自行定义。或者在其他的流程图中,有特殊含义,暂不知晓,也希望有识之士指点一二。

  4、菱形

   作用:表示决策或判断(例如:If...Then...Else),在程序流程图中,用作判别框。

  5、文件

   作用:表达为一个文件,可以是生成的文件,或者是调用的文件。如何定义,需要自己根据实际情况做解释。

  6、括弧

   作用:注释或者说明,也可以做条件叙述。一般流程到一个位置,做一段执行说明,或者特殊行为时,会用到它。

  7、半圆形

   作用:半圆在使用中常作为流程页面跳转、流程跳转的标记。

  8、三角形

   作用:控制传递,一般和线条结合使用,画数据传递。

  9、梯形

   作用:一般用作手动操作。

  10、椭圆形或圆形

   作用:如果画小圆,一般是用来表示按顺序数据的流程。

   如果是画椭圆形,很多人用作流程的结束。如果是在use case用例图中,椭圆就是一个用例了。

  11、六边形

   作用:表示准备之意,大多数人用作流程的起始,类似起始框。

  12、平行四边形

   作用:一般表示数据,或确定的数据处理。或者表示资料输入(Input)。

  13、角色

   作用:来自于use case 用例,模拟流程中执行操作的角色是谁。需要注意的时,角色并非一定是人,有时候是机器自动执行,有时候也可是是模拟一个系统管理。

  14、数据

   作用:就是指保存我们网站数据的数据库。

  15、图片

   作用:表示一张图片,或者置入一个已经画好的图片、流程或者一个环境。

 

 

如何绘制流程图?(https://www.edrawsoft.com/cn/How-to-draw-flowchart.php)

当我们还是新手的时候,我们中的大多数不知道如何绘制流程图,但是随着时间和经验的积累,我们获得一些新的技能。一个好的流程图帮助我们理解系统的流程。如果一个流程图没有绘制好,就会误导系统的设计师或者导致不好的结果。因此,创建流程图时,细心和技能都很重要。我会建议您使用流程图方便您理解它的流程。

尽管有许多符号在流程图中可以用来表示不同的步骤,精确的流程图只会使用其中几种符号,比如说过程、决定、开始、延迟、云等符号。

流程图的基本元素是一个简单的行动,可以是现金付款,是由一个方块代表的。流程图就像是一个方块连接着一个方块,连接这些方块的是箭头。

 

当必须要做出决定的时候,过程就会变得越来越复杂,这个时候必须采取替代行动。在流程图中“决定”的形状是菱形,决定的答案只有“是””或者“不是”两种,就像在图形2种展示的那样。复杂的决定都是由简单决定结合而成的。

 

 

 

关于决定,过程经常会出错,要么是问了错误的问题要么是给了错的答案。

当方块不能够用线直接连接,分开的线和匹配名字的方块互相协调。这通常发生在线交叉到下一个页面的时候。

 

 图形3. 跨页的持续流程图

 

通过使用多个连接,这样绘制大型的流程图就变得相当简单了,但是流程图太大了理解起来就会变得困难。理想的流程图大小是一页就够了,这样的话,流程图就给人一种视觉上的“主干”感觉,这样也很方便使用。

大的过程可以分解成层级的小的流程图,作为分过程方块。这就像一个高级别的普通行为方块,可以“放缩”成另一个流程图,就像图形4中显示的那样。

 图形4. 分过程

在分析过程是等待方块的时候,一个额外的行为方块很重要,这样就会突出延迟(也就是 行为)。这就是一个典型的点,一个过程的总体花费可以通过表演或许是在其他过程减少延迟来提升。

 

 

编程基本功训练:流程图画法及练习

对于“程序设计”的工作,很多刚開始学习的人的理解就是“写代码”。相同,新手们苦恼的问题是,他们仅仅会“写代码”。当接到一个新的任务,不少人总是在第一时间就爬到键盘上去敲代码。敲着敲着,就把自己绕糊涂了。头晕脑胀地坚持下来,程序能执行,阿弥托佛,赶紧撤。这样做出的程序,并不可靠。
  在程序设计中,最重要的不是敲代码,而是设计。就像建筑、机械等行业的要画设计图、施工图,程序设计的思路也有必要用图的形式画出来。绘图的过程就是思考的过程,因为其直观性,绘图的过程本身又促进了思考。在软件project中,已经发展出了非常多种有用的图,为软件产品设计的质量提供保证。这部分练习帮助程序设计者掌握和实践的“程序流程图”。
  一、什么是程序流程图

  “程序流程图”常简称为“流程图”,是一种传统的算法表示法,程序流程图是人们对解决这个问题的方法、思路或算法的一种描写叙述。它利用图形化的符号框来代表各种不同性质的操作,并用流程线来连接这些操作。在程序的设计(在编码之前)阶段,通过画流程图,能够帮助我们理清程序思路。下图是一个简单的流程图,描写叙述求两个数的最大公约数的算法(辗转相除法)。

    

  画流程图是每一个程序猿的基本功。流程图有其规范,这是用于技术人员之间交流的须要,并非想怎么画就怎么画。流程图中经常使用的符号见右图,在前述求最大公约数的流程图中找出相应的部分。

 

  二、三种控制结构的流程图表示

  这部分不再写文字,各种程序设计的教材中都会写一些,至少在讲各种控制结构时,总时要讲的。请參考自己手头能找到的教材,认真品味。
  我们直接提示若干任务,画一画,就会了。

 

  三、练习题目(各部分分别至少选两个画一画,注意用一张质量好一些纸,书写整齐,确保越画越高兴)

  1、热身
  (1)将英尺转换为米
  (2)输入两个点的坐标,求两点之间的距离并输出
  2、分支程序
  (1)描写叙述一下今晚的计划:假设下雪,校园内玩雪;否则,在103上机(怀念)
  (2)丢硬币决定今晚:正面,K歌;反面:逛街;立起来,学C++

  (3)求函数值:

  

  

  (4)输入一元二次方程ax^2+bx+c=0的各项系数,并依据各系数的值的情况,分别进行求解(考虑对系数的各种可能太复杂时,给自己减少些难度,先从不考虑系统直接求解開始)
  (5)输入个人月收入总额,计算出他本月应缴税款和税后收入(税率等參考第9周任务) 
  3、循环结构
  (1)求1+2+3+...+100(三种循环结构都画一画)
  (2)输出1/3-3/5+5/7-7/9…+19/21的结果 
  (3)一个数假设恰好等于它的因子之和,这个数就称为“完数”。找出1000内的全部完数。
  (4)输出1000以内的全部回文数
  (5)鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,怎样买? 
  4、复杂结构的程序

  在解决这个问题中,利用函数能够让我们利用更“有序”的思维去想问题,“自顶向下,逐步求精”,真理。例:以下的流程图用于输出星号图,体现的是这样的思维,右边的图能够嵌入到左边中,替代“输出第i行”的框子,也能够指导我们专门编成一个函数。

  

 

 

算法和流程图

2.1.1算法

计算机语言只是一种工具。光学习语言的规则还不够,最重要的是学会针对各种类型的问题,拟定出有效的解决方法和步骤即算法。有了正确而有效的算法,可以利用任何一种计算机高级语言编写程序,使计算机进行工作。因此,设计算法是程序设计的核心。

并非只有“计算”的问题才有算法。广义地说,为解决一个问题而采取的方法和步骤,称为“算法”。不要把“计算方法”(computational method)和“算法”(algorithm)这两个词混淆。前者指的是求数值解的近似方法,后者是指解决问题的一步一步的过程。在解一个数值计算问题时,除了要选择合适的计算方法外,还要根据这个计算方法写出如何让计算机一步一步执行以求解的算法。对于计算机外行来说,他们可以只使用别人已设计好的现成算法,只需根据算法的要求给以必要的输入,就能得到输出的结果。对他们来说,算法如同一个“黑箱子”一样,他们可以不了解“黑箱子”中的结构,只是从外部特性上了解算法的作用,即可方便地使用算法。但对于程序设计人员来说,必须会设计算法,并且根据算法编写程序。

对同一个问题,可以有不同的解题方法和步骤。例如,求1+2+3+…+100,可以先进行1+2,再加3,再加4,一直加到100,也可采取100+(1+99)+(2+98)+…+(49+51)+50=100+50+49×100=5050。还可以有其它的方法。当然,方法有优劣之分。有的方法只需进行很少的步骤,而有些方法则需要较多的步骤。一般说,希望采用方法简单,运算步骤少的方法。因此,为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法。

文本框:一个计算问题的解决过程通常包含下面几步:

  • 确立所需解决的问题以及最后应达到的要求。必须保证在任务一开始就对它有详细而确切的了解,避免模棱两可和含混不清之处。
  • 分析问题构造模型。在得到一个基本的物理模型后,用数学语言描述它,例如列出解题的数学公式或联立方程式,即建立数学模型。
  • 选择计算方法。如定积分求值问题,可以用矩形法、梯形法或辛普生法等不同的方法。因此用计算机解题应当先确定用哪一种方法来计算。专门有一门学科“计算方法”,就是研究用什么方法最有效、最近似地实现各种数值计算的,换句话说,计算方法是研究数值计算的近似方法的。
  • 确定算法和画流程图。在编写程序之前,应当整理好思路,设想好一步一步怎样运算或处理,即为“算法”。把它用框图画出来,用一个框表示要完成的一个或几个步骤,它表示工作的流程,称为流程图。它能使人们思路清楚,减少编写程序中的错误。
  • 编写程序。
  • 程序调试,即试算。一个复杂的程序往往不是一次上机就能通过并得到正确的结果的,需要反复试算修改,才得到正确的可供正式运行的程序。
  • 正式运行得到必要的运算结果。

2.1.2流程图

为了表示一个算法,可以用不同的方法。常用的有:自然语言;传统流程图;结构化流程图;伪代码;PAD图等。这里我们主要介绍流程图。

  1. 传统流程图

用图表示的算法就是流程图。流程图是用一些图框来表示各种类型的操作,在框内写出各个步骤,然后用带箭头的线把它们连接起来,以表示执行的先后顺序。用图形表示算法,直观形象,易于理解。

文本框:美国国家标准化协会ANSI曾规定了一些常用的流程图符号,为世界各国程序工作者普遍采用。最常用的流程图符号见图。

  • 处理框(矩形框),表示一般的处理功能。
  • 判断框(菱形框),表示对一个给定的条件进行判断,根据给定的条件是否成立决定如何执行其后的操作。它有一个入口,二个出口。
  • 输入输出框(平行四边形框)。
  • 起止框(圆弧形框),表示流程开始或结束。
  • 连接点(圆圈),用于将画在不同地方的流程线连接起来。如图中有两个以1标志的连接点(在连接点圈中写上“l”)则表示这两个点是连接在一起的,相当于一个点一样。用连接点,可以避免流程线的交叉或过长,使流程图清晰。
  • 流程线(指向线),表示流程的路径和方向。
  • 注释框, 是为了对流程图中某些框的操作做必要的补充说明,以帮助阅读流程图的人更好地理解流程图的作用。它不是流程图中必要的部分,不反映流程和操作。

程序框图表示程序内各步骤的内容以及它们的关系和执行的顺序。它说明了程序的逻辑结构。框图应该足够详细,以便可以按照它顺利地写出程序,而不必在编写时临时构思,甚至出现逻辑错误。流程图不仅可以指导编写程序,而且可以在调试程序中用来检查程序的正确性。如果框图是正确的而结果不对,则按照框图逐步检查程序是很容易发现其错误的。流程图还能作为程序说明书的一部分提供给别人,以便帮助别人理解你编写程序的思路和结构。

例:对一个大于或等于3的正整数,判断它是不是一个素数。

所谓素数,是指除l和该数本身之外,不能被其它任何整数整除的数。例如,13是素数,因为它不能被2,3,4,…,12整除。

判断一个数N(N>3)是否素数的方法是很简单的:将N作为被除数,将2到(N—1)各个整数轮流作为除数,如果都不能被整除,则N为素数。算法可以表示如下:

① 输入N的值。

② I=2。

③ N被I除。

④ 如果余数为0,表示N能被I整除,则打印N“不是素数”,算法结束。否则继续。

⑤ I=I+1。

⑥ 如果I≤N-l,返回③。否则打印N“是素数”。然后结束。

实际上.N不必被2到(N一1)的整数除,只需被2到N/2间整数除即可,甚至只需被2到之间的整数除即可。例如,判断13是否素数,只需将13被2,3除即可,如都除不尽,N必为素数。步骤⑥可改为:

⑥:如果I≤,返回③。否则算法结束。

Fortran代码文件为[e_212_01.f][e_212_02.f]

 

 

  1. 三种基本结构

传统的流程图用流程线指出各框的执行顺序,对流程线的使用没有严格限制。因此,使用者可以毫不受限制地使流程随意地转来转去,使流程图变得毫无规律,阅读者要花很大精力去追踪流程,使人难以理解算法的逻辑。如果我们写出的算法能限制流程的无规律任意转向,而像一本书那样,由各章各节顺序组成,那样,阅读起来就很方便,不会有任何困难,只需从头到尾顺序地看下去即可。

为了提高算法的质量,使算法的设计和阅读方便,必须限制箭头的滥用,即不允许无规律地使流程乱转向,只能按顺序地进行下去。但是,算法上难免会包含一些分支和循环,而不可能全部由一个一个框顺序组成。如上例不是由各框顺序进行的,包含一些流程的向前或向后的非顺序转移。为了解决这个问题,人们设想,如果规定出几种基本结构,然后由这些基本结构按一定规律组成一个算法结构,就如同用一些基本预制构件来搭成房屋一样,整个算法的结构是由上而下地将各个基本结构顺序排列起来的。1966年,Bohra和Jacoplni提出了以下三种基本结构,用这三种基本结构作为表示一个良好算法的基本单元。

  • 顺序结构:如图所示的虚线框内,A和B两个框是顺序执行的。顺序结构是最简单的一种基本结构。

  • 选择结构:如图所示的虚线框中包含一个判断框。根据给定的条件p是否成立而选择执行A和B。p条件可以是“x>0”或“x>y”等。注意,无论p条件是否成立,只能执行A或B之一,不可能既执行A又执行B。无论走哪一条路径,在执行完A或B之后将脱离选择结构。A或B两个框中可以有一个是空的,即不执行任何操作。

 

  •  
       
   


循环结构:又称重复结构,即反复执行某一部分的操作。有两类循环结构:

  • 当型(While):当给定的条件p成立时,执行A框操作,然后再判断p条件是否成立。如果仍然成立,再执行A框,如此反复直到p条件不成立为止。此时不执行A框而脱离循环结构。
  • 直到型(Until):先执行A框,然后判断给定的p条件是否成立。如果p条件不成立,则再执行A,然后再对p条件作判断。如此反复直到给定的p条件成立为止。此时脱离本循环结构。

 

       
   
 

 

注意两种循环结构的异同:(1)两种循环结构都能处理需要重复执行的操作。(2)当型循环是“先判断(条件是否成立),后执行(A框)”。而直到型循环则是“先执行(A框),后判断(条件)”。(3)当型循环是当给定条件成立满足时执行A框,而直到型循环则是在给定条件不成立时执行A框。

 

 
 

 

同一个问题既可以用当型循环来处理,也可以用直到型循环来处理。对同一个问题,如分别用当型循环结构和直到型循环结构来处理的话,则两者结构中的判断框内的判断条件恰为互逆条件。Fortran77和90/95标准都不提供do until语句,Compaq Visual Fortran也不提供此扩展(但有些计算机系统则提供),因此需要将直到型循环转换成一个当型循环结构:直到型循环等于一个A框加上一个当型循环,同时将给定的判断条件“取反”。

  1. 结构流程图

1973年美国学者I.Nassi和B.Shneiderman提出了一种新的流程图形式。在这种流程图中,完全去掉了带箭头的流程线。全部算法写在一个矩形框内。在该框内还可以包含其它的从属于它的框,即可由一些基本的框组成一个大的框。这种适于结构化程序设计的流程图称N-S结构化流程图,它用以下的流程图符号:

 

 
 


(1)顺序结构:A和B两个框组成一个顺序结构。

 

 
 


(2)选择结构:当p条件成立时执行A操作,p不成立则执行B操作结构。

 

       
   
 
 


(3)循环结构:当型循环结构下,图符表示先判断后执行,当p条件成立时反复执行A操作,直到p条件不成立为止。

直到型循环结构下,图符表示先执行后判断,当p条件不成立时反复执行A操作,直到p条件成立为止。

用以上三种N-S流程图中的基本框.可以组成复杂的N-S流程图,以表示算法。

例:将判别素数的算法用N-S流程图表示。

上面的非结构化流程图不是由三种基本结构组成的:图中间的循环部分有两个出口,不符合基本结构的特点。由于不能直接分解为三种基本结构,应当先作必要的变换再用N-S流程图的三种基本结构的符号来表示。即将第一个菱形框的两个出口汇合在一点。其方法是设一个标志值K,它的初始状态为0(表示N为素数),当K≠0时为非素数。注意当型和直到型的判断条件。

Fortran代码文件为[e_212_03.f90]

N-S图表示算法的优点是:比传统流程图紧凑易画,尤其是它废除了流程线。整个算法结构是由各个基本结构按顺序组成的,其上下顺序就是执行时的顺序。写算法和看算法只需从上到下进行就可以了,十分方便。归纳起来,一个结构化的算法是由一些基本结构顺序组成的;在基本结构之间不存在向前或向后的跳转,流程的转移只存在于一个基本结构范围之内(如循环中流程的跳转);一个非结构化的算法可以用一个等价的结构化算法代替,其功能不变。如果一个算法不能分解为若干个基本结构,则它必然不是一个结构化的算法。

  1. 伪代码表示的算法

用传统的流程图和N-S图表示算法直观易懂,但画起来比较费事,在设计一个算法时,可能要反复修改,而修改流程图是比较麻烦的。因此,流程图适宜于表示一个算法,但在设计算法过程中使用不是很理想的(尤其是当算法比较复杂、需要反复修改时)。为了设计算法时方便,常用一种称为伪代码的工具。伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。它如同一篇文章一样,自上而下地写下来。每一行(或几行)表示一个基本操作。它不用图形符号,因此书写方便、格式紧凑,易懂也便于向计算机语言算法(即程序)过渡。

可以用英文、汉字、中英文混合表示算法,以便于书写和阅读为原则。用伪代码写算法并无固定的、严格的语法规则,只要把意思表达清楚,并且书写的格式要写成清晰易读的形式。例如,对于电子在特殊几何构型材料中的散射问题:[sphere-1.doc][sphere-2.doc][sphere.f]

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

程序设计的基本方法 的相关文章

  • 算法 常见数学问题

    一 最大公约数 gcd int gcd int a int b if b 0 return a else return gcd b a b 非递归形式 int gcd int a int b int tmp while b 0 tmp a
  • 代码随想录一刷-Day09

    LeetCode27 移除元素 public int removeElement int nums int val if nums length 0 return 0 双指针 int slow 0 fast 0 while fast lt
  • 刷题之移动零

    给定一个数组 nums 编写一个函数将所有 0 移动到数组的末尾 同时保持非零元素的相对顺序 示例 输入 0 1 0 3 12 输出 1 3 12 0 0 说明 必须在原数组上操作 不能拷贝额外的数组 尽量减少操作次数 来源 力扣 Leet
  • 算法:单调队列

    队列 先进先出 题型 滑动窗口 求滑动窗口里的最大 或最小 值 例1 P1886 滑动窗口 模板 单调队列 求滑动窗口里的最大小值 include
  • 【PAT】1033 旧键盘打字 (20 分)

    1033 旧键盘打字 20 分 旧键盘上坏了几个键 于是在敲一段文字的时候 对应的字符就不会出现 现在给出应该输入的一段文字 以及坏掉的那些键 打出的结果文字会是怎样 输入格式 输入在 2 行中分别给出坏掉的那些键 以及应该输入的文字 其中
  • sort06-快速排序

    sort 快速排序 排序原理 需求 切分原理 代码实现 快速排序和归并排序的区别 快速排序时间复杂度分析 快速排序 快速排序是对冒泡排序的一种改进 它的基本思想是 通过一趟排序将要排序的数据分割成独立的两部分 其中一部分的所有数据都比另外一
  • 代码随想录一刷-Day08

    Offer58 II 左旋转字符串 使用中间数组很容易 public String reverseLeftWords String s int n if n 0 s null s length 0 return s 使用中间数组 char
  • 测试gpt的function函数功能

    官网API 科学上网查看 1 我对该功能的理解 利用gpt的上下文理解能力 在执行方法run conversation xx 时 目标锁定在 提取出functions里每个function下required属性对应的值 而真正的functi
  • 字典排序算法(通俗易懂)

    我们先看一个例子 示例 1 2 3的全排列如下 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 我们这里是通过字典序法找出来的 那么什么是字典序法呢 从上面的全排列也可以看出来了 从左往右依次增大 对这就是字典序法
  • 刷题之图像渲染

    有一幅以二维整数数组表示的图画 每一个整数表示该图画的像素值大小 数值在 0 到 65535 之间 给你一个坐标 sr sc 表示图像渲染开始的像素值 行 列 和一个新的颜色值 newColor 让你重新上色这幅图像 为了完成上色工作 从初
  • 模型选择、欠拟合和过拟合学习笔记

    训练误差 泛化误差 训练误差 模型在训练数据集上表现出的误差 泛化误差 指模型在任意一个测试数据样本上表现出的误差的期望 并常常通过测试数据集上的误差来近似 过拟合 欠拟合 过拟合 训练误差远小于其在测试数据集上的误差 欠拟合 模型无法得到
  • 刷题之字符串的排列 以及双指针滑动窗口

    刷题 给你两个字符串 s1 和 s2 写一个函数来判断 s2 是否包含 s1 的排列 如果是 返回 true 否则 返回 false 换句话说 s1 的排列之一是 s2 的 子串 示例 1 输入 s1 ab s2 eidbaooo 输出 t
  • 算法案例:如何判断链表有环?

    本文转载于 算法 如何判断链表有环 如何判断单链表是否存在环 有一个单向链表 链表当中有可能出现 环 就像题图这样 如何用程序判断出这个链表是有环链表 不允许修改链表结构 时间复杂度O n 空间复杂度O 1 方法一 穷举遍历 方法一 首先从
  • HDU2035(附所用数论中的性质推导及快速模运算的递归形式)

    Problem Description 求A B的最后三位数表示的整数 说明 A B的含义是 A的B次方 Input 输入数据包含多个测试实例 每个实例占一行 由两个正整数A和B组成 1 lt A B lt 10000 如果A 0 B 0
  • 算法:链表

    单链表 单链表是一种链式存取的数据结构 链表中的数据是以结点来表示的 每个结点存储两个数据 一是该结点本身的值 二是其指向的下一结点的下标 用e i 表示节点i的值 用ne i 表示结点i指向的下一结点的坐标 head表示头结点的下标 id
  • 7-1 图的先深搜索+7-2 图的先广搜索

    由于本人用指针 链表实现数据结构算法时经常有使用堆叠字节的警告以及栈溢出报错 于是就都用数组或者C stl模拟了 输出无向图的给定起点的先广序列 输入格式 输入第一行给出三个正整数 分别表示无向图的节点数N 1
  • 刷题之二分查找

    题目 给定一个 n 个元素有序的 升序 整型数组 nums 和一个目标值 target 写一个函数搜索 nums 中的 target 如果目标值存在返回下标 否则返回 1 来源 力扣 LeetCode 链接 https leetcode c
  • 优化算法学习(LM算法)

    文章目录 推荐书籍 理论理解 程序实现 ceres安装 代码 推荐书籍 建议学习 METHODS FOR NON LINEAR LEAST SQUARES PROBLEMS http www2 imm dtu dk pubdb views
  • 数论算法:唯一因子分解定理

    这里讲一下算法中常用到的唯一因子分解定理 合数a仅能以一种方式写成如下乘积形式 a p1 e1 p2 e2 pr er 其中pi为素数 p1
  • 第十四届蓝桥杯模拟赛(第三期)试题与题解 C++

    目录 一 填空题 一 最小的十六进制 答案 2730 二 Excel的列 答案 BYT 三 相等日期 答案 70910 四 多少种取法 答案 189 五 最大连通分块 答案 148 二 编程题 一 哪一天 二 信号覆盖 三 清理水草 四 最

随机推荐

  • 软件开发的功能性需求和非功能性需求

    作者 天光 链接 https www zhihu com question 20303645 answer 15588211 来源 知乎 著作权归作者所有 转载请联系作者获得授权 功能性需求 一般是我们显性易见的 就是一般实现了什么功能 提
  • 关于AR眼镜的小结

    根据IDC International Data Corporation 国际数据公司 IDC是全球著名的信息技术 电信行业和消费科技咨询 顾问和活动服务专业提供商 的报告 2018年AR和VR的产值将达到178亿美元 比2017年的91亿
  • MATLAB中对自定义函数进行参数估计的方法

    先输入x和y的数据 然后在matlab的工作栏输入cftool 在弹出来的拟合工具箱内选择变量为你的x和y 然后右边的拟合方法选择custom equation 然后输入你要拟合的式子的形式 按fit就可以拟合了
  • 三种前台与后台,传表单数据包含文件上传。第三Jackson 将数据映射成实体类

    1使用表单action 属性 直接访问后台 后台是servlet 后台方法入参 protected void doPost HttpServletRequest request HttpServletResponse response 方法
  • 张钜楷:【黄金消息】1.13黄金原油实时行情分析策略及多空趋势解套

    黄金最新行情解析 黄金消息面解析 周四 1月13日 亚洲时段 现货黄金持稳于1824附近 周三 1月12日 金价连续第四个交易日上涨 数据显示美国通胀创39年新高 符合市场预期 引发美元贬值担忧 同时高通胀令市场提升避险黄金的魅力 不过 股
  • c++中的stack用法

    c stack 堆栈 是一个容器的改编 它实现了一个先进后出的数据结构 FILO 使用该容器时需要包含 include头文件 定义stack对象的示例代码如下 stacks1 stacks2 stack的基本操作有 1 入栈 如s push
  • Java调用JavaFX的方法

    Java调用JavaFX的方法 这三种方法分别为 1 用ScriptEngineManager类 这是基于JSR 223规范的java脚本API scripting API 可以在java程序中运行一些脚本 如 JavaFX script
  • [yolov4]yolov4.weights

    版本 https github com AlexeyAB darknet 权重链接 yolov4 weights https 72k us file 26468910 439532813 提取密码 446792 yolov4 conv 13
  • [现代控制理论]5_系统的可控性_controllability

    现代控制理论 11 现代控制理论串讲 完结 pdf获取 现代控制理论 10 可观测性与分离原理 观测器与控制器 现代控制理论 9 状态观测器设计 龙伯格观测器 现代控制理论 8 5 线性控制器设计 轨迹跟踪simulink 现代控制理论 8
  • php正则表达式检查用户输入的格式是否正确

    比如说用户提交了一个电话 或者提交了一个邮箱 我们怎么才能知道它是不是正确的电话和邮箱格式 用正则表达式来匹配 PHP提供了一种强大的方法创建和匹配文本中的模式 可以创建一些规则来查找串的模式 这个规则就成为正则表达式 d d d d d
  • Redis常见面试题

    一 缓存处理流程 前台请求 后台先从缓存中取数据 取到直接返回结果 取不到时从数据库中取 数据库取到更新缓存 并返回结果 数据库也没取到 那直接返回空结果 二 缓存穿透 缓存穿透是指缓存和数据库中都没有的数据 而用户不断发起请求 如发起为i
  • Java反射1.类加载器概述与获取class文件对象的三种方式

    类加载器概述 一 类的加载 1 类的加载 当Java程序要使用某个类时 如果该类还未被加载到内存中 则系统会通过加载 连接 初始化三步来实现对这个类进行初始化 加载 就是指将类的class文件读入内存 并为之创建一个Class对象 任何类被
  • [Winfrom]Cefsharp配置与初始化

    摘要 在做客户端程序的时候 本来打算使用wpf的 但在内嵌cefsharp的时候 发现输入法有问题 所以使用了winform作为cefsharp的容器 系列文章 CefSharp 在同一窗口打开链接的方法 Winform CefSharp
  • 树的一些基础概念、堆和 python中heapq模块使用简介

    树定义 树是一种数据结构 比如 目录结构 树是由n个节点组成的集合 n 0 那么是一颗空树 n gt 0 那么存在一个节点为书的根节点 其他节点可分为m个子集 每个子集又为一棵子树 关于树的一些概念 根节点 例 A 叶子节点 不能分叉的节点
  • elementUI中图片上传upload组件,上传图片数据到后台

    结构
  • 【原创】谈谈服务雪崩、降级与熔断

    引言 首先 之所以谈这个话题呢 是发现现在很多人对微服务的设计缺乏认识 所以写一篇扫盲文 当然 考虑到目前大多微服务的文章都是口水文 烟哥争取将实现方式讲透 点清楚 让大家有所收获 OK 我要先说明一下 我有很长一段时间将服务降级和服务熔断
  • 谷粒商城 高级篇 (二) --------- ElasticSearch 检索

    目录 一 初步检索 1 cat 2 索引一个文档 保存 3 查询文档 4 更新文档 5 删除文档 索引 6 bulk 批量 API 7 样本测试数据 二 进阶检索 1 SearchAPI 2 Query DSL 3 Mapping 创建映射
  • 总结:整理 oracle异常错误处理

    5 1 异常处理概念 5 1 1 预定义的异常处理 5 1 2 非预定义的异常处理 5 1 3 用户自定义的异常处理 5 1 4 用户定义的异常处理 5 2 异常错误传播 5 2 1 在执行部分引发异常错误 5 2 2 在声明部分引发异常错
  • SGI STL 第二级空间配置器 内存池

    从内存池中取控件给free list 使用 是chunk alloc的工作 template
  • 程序设计的基本方法

    IPO模式 输入 处理 算法 是程序的灵魂 输出 问题的计算部分 程序编写步骤 分析问题 确定问题 设计算法 编写实现 调试测试 升级维护 编程技巧之流程图 我们写的程序都是有逻辑顺序的 即是有流程的 流程图的作用则是对这种逻辑顺序的一种描