- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章基础题目选解-BNUOJ.ppt
第五章 基础题目选解
;学习目标:
;6、熟练掌握用qsort库函数给整数和字符串排序的方法。
7、熟练掌握小规模素数表的构造方法
8、熟练掌握素因子分解的办法。
9、熟练掌握三角形有向面积的意义和计算办法
10、完成一定数目的习题。
;在算法比赛中,编程能力非常重要。算法设计得再好,如果不能在很短的时间里面实现出来也是白搭。这一章就是通过一些习题,让大家对一些小的编程技巧有所了解。为后面一些复杂的算法打基础。;5.1 字符串;习题1:
输入一个错位后敲出的字符串,输出打字员本来想打出的句子。;如何做到题目要求的输入一个字符串?;主要输入库函数:
一次输入一个字符:
scanf(格式化字符串,地址表);
getchar()
getch
一次输入一个字符数组:
scanf(格式化字符串,地址表);
gets()
C++
cin;1、更广义的常量
2、转义
3、多种解法,代码长度不一样
4、可以尝试C++里面的string;习题2:
TeX括号
在Tex中,左括号是``,右括号是’’。输入一篇包含双引号的文章,你的任务是把它转化为TeX格式
;习题3:
周期串
如果一个字符串可以由某个长度为K的字符串重复多次得到,我们就说该串以K为周期。例如,abcabcabcabc以3位周期(注意,它也是以6和12为周期)。输入一个长度不超过80的穿,输入它的最小周期。
样例输入:
HoHoHo
样例输入:
2
; 5.2 高精度
在介绍C语言时,大家已经看到很多整数溢出的情形。如果计算的结果真的很大,需要用所谓的高精度算法,用数组来存储整型,模拟手算的方法进行四则计算。
;习题4:
小学生算术
很多学生在学习加法时,发现“进位”特别容易出错。你的任务是计算两个整数的相加时需要多少次进位。你编制的程序应当可以处理连续多组数据,直到读到两个0(这是输入标记结束)。假设输入的整数都不超过9个数字。;习题5
阶乘的精确值
输入不超过1000的正整数n,输n!=1*2*3…n的精确解。
;习题6:
实现高精度类; 5.3 排序与检索
数据处理室计算机的强项,包括排序,检索统计等。这里举一些经典的例子。 ;习题7:
6174问题
假设你有一个各位数字互不相同的四位数,把所有 数字从大到小排列后得到a,从小到大排序后得到b,然后用a-b替换原来的数,并且继续操作,直到回到自己。;冒泡排序思想:
设想被排序的数组R[1..N]垂直竖立,将每个数据元素看作有重量的气泡,根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R,凡扫描到违反本原则的轻气泡,就使其向上漂浮,如此反复进行,直至最后任何两个气泡都是轻者在上,重者在下为止。;主要的排序办法:
冒泡排序
快速排序
堆排序
合并排序
插入排序
桶排序
基数排序
希尔排序
; 快速排序
快速排序是竞赛中经常需要使用的算法,特别是高中的信息学比赛 ,可以说快速排序算法是必须非常熟悉的。而ACM中可以使用C,C++函数,qsort和sort函数。直接调用即可排序,所以不少同学估计都没有自己写过快速排序的代码。
而快排里面使用的分治思想很实用。
快排思路:
1.选取一个元素X作为某段数据的标识,让比X小的都排在左边,比X大的都排在右边。
2.递归的进行第1步,直到所有数据都排好序。
; 堆排序
堆排序需要维护的堆的性质要满足:
1.是一棵二叉树,而且是完全二叉树(除了最后一层都是满的,最后一层先把左边填满)
2.如果是最大堆,要保证父节点的值大于两个子节点的值。(最小堆同理)
二叉树的数据结构是用数组来表示的,完全二叉树的性质有 父节点坐标*2 = 左儿子坐标,
父节点坐标*2 + 1 = 右儿子坐标。
流程:
1.建立一个最大堆,让数组满足堆的性质。
2.每次取出堆顶的最大值,放到堆尾,并将堆的大小减去1,直到剩下一个元素不用排序为止。
;习题8:
字
文档评论(0)