本周进行了不少的C++代码练习,刷题期间遇到过很多问题,但慢慢也就解开了,接下来进行一下总结。
题目里有不少输入数据不再是以前那样先规定数组长度,再进行输入,而是输入未知长度的数据,这个情况下面临的问题是如何结束输入的循环。由于输入数据时往往两个数据之间要空格隔开,所以需要键入回车键来终止循环。在翻阅了不少前辈的博客之后,我最终学会的判断方式是cin.get()=='\n',以此来判定是否输入了回车键。
第二个错误并不是技术上的,而是审题问题,在写PTA-1012-数字分类的时候,我因为审题失误一直出错,输入样例与输出样例中的A4一直对不上,最后才发现第一个输入数字是规定数组长度。这种错误就只能看自己能不能足够细心,还有一些那种比较复杂的数学类的题,我之前在跟学长们参加比赛的时候遇到过,光是题目就没有理解是什么意思,根本无从下手,这样的情况只能通过增加阅历来解决它。
在刷题中,不少题目在数据范围上动了手脚,用循环时稍有差错便会报“运行超时”,比如输出素数时。我记得输出素数是编程书中一个典型的例题,老师也提到过。通常是一直用数a去除以数b,b从2开始一直自增到a-1,如果均不能整除便为素数。这个循环在求那种数据很大的素数时极易超时。后来的改进是数b从2一直自增到sqrt(a),还有其他的改进方法,但我目前只能熟练运用这种。其他的数据范围易错点就是定义变量类型时的问题,比如是long long还是int,这个问题不是很大。