ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:21.07KB ,
资源ID:17665190      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17665190.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(算法基础Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

算法基础Word文件下载.docx

1、从屏幕输入一个十进制整数N,将其转化为二进制数输出。(提示:十进制转K进制只需N不断除以K直到N为0,并将余数倒序输出即为转化后的K进制数) K进制转换 描述:从屏幕输入一个十进制整数N和要转化的进制K,将N转化为K进制数输出,K2。当K大于10时需要注意一些问题) 十进制转换从屏幕输入一个K进制整数N,将其转化为十进制整数。与上面做法不同,自己查)2.2. 寻找质数找出200以内的所有质数并输出。(优化:对某个数进行判断其是否为质数时,可以进行许多优化。优化是一种编程技巧)2.3. 回文数判断给定一个数N,判断他是否为回文数。涉及数的剥离)数的剥离已知一个数N,将其每一位都剥离出来。算法:1

2、.令M=N%10,M即为N当前最后一位; 2.N=N/10,将N最后一位抛除; 3.重复1、2步操作,直到N为零,每次得到的M即为N的各位。代码:while (N0) m=n%10; n=n/10;2.4. ISBN码(NOIP2008年普及组第一题)每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”就是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代

3、表出版社,例如670代表维京出版社;第二个分隔符后的五位数字代表该书在该出版社的编号;最后一位为识别码。 识别码的计算方法如下: 首位数字乘以1加上次位数字乘以2以此类推,用所得的结果mod 11(mod为取余),所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,.,9,再求和,即01+62+29=158,然后取158 mod 11的结果4作为识别码。 你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出

4、你认为是正确的ISBN号码。输入格式输入只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。输出格式输出共一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”)。样例输入【样例1】0-670-82162-4【样例2】0-670-82162-0样例输出Right三、 穷举穷举是算法中很基础也很重要的一个思想,穷举的思想为:列举出问题中所有的可能情况,进行验证筛选后得到正解。列举一般通过循环实现,验证筛选在循环的内部。3.1 水仙花数水仙花数是指一个 n 位数 ( n3 ),它的每个位

5、上的数字的 n 次幂之和等于它本身。(例如:13 + 53+ 33 = 153)严格来说三位数的3次幂数才成为水仙花数。请找出所有为3位数的水仙花数。涉及到数的剥离)3.2 验证哥德巴赫猜想任意一个大于2的偶数都可以写成两个质数的和,请验证100以内的数哥德巴赫猜想成立,并将每个数的拆分输出。3.3 鸡兔同笼问题有一些鸡和兔混在一起,输入他们的头和脚的总数N和M,求分别有多少只鸡和兔。四、 数组操作目前很多题目都要涉及到数组操作,因此能够熟练运用数组是搞算法的重要技能,包括1. 通过循环操作数组2. 对数组下标的灵活运用4.1 杨辉三角给定K,输出前K行的杨辉三角。 例: 1 1 11 2 1

6、1 3 3 11 4 6 4 1五、 递推递推其实就是通过推导出一个递推公式,由F(i),F(j)进行一些变换等得到F(n),其中I,jn5.1 切饼王小二自夸刀工不错,有人放一张大的煎饼在砧板上,问他:“饼不许离开砧板,切100刀最多能分成多少块?”5.2 兔子繁殖问题如果有一对小兔,每一个月都生下一对小兔,而所生下的每一对小兔在出生后的第三个月也都生下一对小兔。那么,由一对兔子开始,满一年时一共可以繁殖成多少对兔子?第一个月,这对兔子生了一对小兔,于是这个月共有2对(1+1=2)兔子。第二个月,第一对兔子又生了一对兔子。因此共有3对(1+2=3)兔子。第三个月,第一对兔子又生了一对小兔而在

7、第一个月出生的小兔也生下了一对小兔。所以,这个月共有5对(2+3=5)兔子。第四个月,第一对兔子以及第一、二两个月生下的兔子也都各生下了一对小兔。因此,这个月连原先的5对兔子共有8对(3+5=8)兔子。)5.3 数字三角形(NT)【问题描述】给定一个具有N层的数学三角形如下图,从顶至底有多条路径,每一步可沿左斜线向下或沿右斜线向下,路径所经过的数字之和为路径得分,请求出最小路径得分。2 6 2 1 8 4 1 5 6 8【输入数据】第1行,一个正整数n,表示三角形的行数第2至n+1行,照描述输入三角形【输出数据】 最小路径得分,行末有换行【样例输入】46 21 8 41 5 6 8【样例输出】

8、10六、 贪心贪心法是从问题的某一个初始状态出发,通过逐步构造最优解的方法向给定的目标前进,并期望通过这种方法产生出一个全局最优解的方法。贪心选择性质:算法中每一步选择都是当前看似最佳的选择,这种选择依赖于已做出的选择,但不依赖于未作出的选择。最优子结构性质:算法中每一次都取得了最优解(即局部最优解),要保证最后的结果最优,则必须满足全局最优解包含局部最优解。6.1 删数问题键盘输入一个高精度的正整数n(n=240位),去掉其中任意s个数字后剩下的数字按原左右次序将组成一个正整数编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数最小。输入:ns输出:最后剩下的最小数。样例输入:1785

9、434样例输出:136.2 排队接水【问题描述】有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小。【输入】输入文件共两行,第一行为n;第二行分别表示第1个人到第n个人每人的接水时间T1,T2,Tn,每个数据之间有1个空格。【输出】输出文件有两行,第一行为一种排队顺序,即1到n的一种排列;第二行为这种排列方案下的平均等待时间(输出结果精确到小数点后两位)。七、 递归递归其实是搜索算法的一种,被称为深度优先搜索(DFS)。经典的递归题目有很多。7.1 数字拆分给定一个数字N,找出他的所有拆分情况(限于和的形式)如7拆分的结果

10、是7=1+67=1+1+57=1+1+1+47=1+1+1+1+37=1+1+1+1+1+27=1+1+1+1+1+1+17=1+1+1+2+27=1+1+2+37=1+2+47=1+2+2+27=1+3+37=2+57=2+2+37=3+47.2 八皇后问题(这是递归中最经典的一道题,这道题完全搞懂后其他递归题目不在话下)现在有一个8*8的棋盘,要在这个棋盘上放置8个皇后,并且满足:任意两个皇后不在同一条直线上(不同行、列、斜线)。输出所有满足要求的情况。7.3 骑士游历 设有一个mn的棋盘(2m50,2n50),在棋盘上任一点有一个中国象棋“马”,马走的规则为:马走日字;马只能向右走。当m

11、,n给出后,同时给出马起始的位置和终点的位置,试找出从起点到终点所有路径的数目。 m,n,x1,y1,x2,y2 (分别表示m,n、起点坐标和终点坐标) 路径数目(若不存在,则输出0)八、 时空复杂度计算作为一个coder应该要对自己的程序有一些性能上的了解,诸如:健壮性:是否在各种条件下(包括不合法的情况)都能稳定运行;耦合性:程序是否将功能都进行分模块,耦合度越低证明每个模块越独立,模块独立的好处是:出现BUG的时候不会影响到其他模块的正常运行,便于DEBUG;并且模块的功能可以反复利用。时空复杂度:这在算法中是最重要的一项属性。当一个算法没有冗余状态时,时间复杂度和空间复杂度总体达到最优

12、,此时的时间和空间是不可调和的。如果想要减少时间,就必须增加空间(例:寻找质数的优化算法),反之也一样。 一般情况下,对于一台计算机配置单核2Ghz左右CPU保守估计运算次数在1s一亿次左右(不要拿去显摆,这个是我们老师讲的,具体CPU总频数我也不记得了,其实计算次数要明显高于1亿次,以一亿次为准是防止题目超时)时间复杂度计算:平均时间复杂度用O来表示,当然也有最坏时间复杂度和最优时间复杂度的表示方法。1. 赋值、判断、运算语句都算是进行一次计算。2. 循环则按照循环上下界来确定。比如for(i=1;i=n;i+)就是O(n)的时间复杂度。如果多重循环嵌套则累乘,比如for (i=1;i+)for (j=1;jj+) 表达式; 时间复杂度为O(n2)如果是表达式1;表达式2; 则时间复杂度为O(2*n2),不过一般系数K的影响不大,因此也称之为n2级别的算法。3. 递归的时间复杂度与循环计算相同,但由于递归是堆栈,所以占用内存很大,效率比循环低很多。空间复杂度计算:首先要了解char、int、bool等数据类型的字节数,以4字节的int为例:int x100; 即声明了一个占用400字节(400B)的内存空间。 Int x10001000; 声明了一个占用4,000,000字节(4*1000*1000)即4MB大小的空间。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1