CCF考前注意几点
1.数组最好保持初始化习惯,且检查数组初始化在循环内还是循环外,若在循环内需要对数组进行处理,则数组初始化必须放在for循环内。
2.for循环保持好习惯,用括号括起来,以免粗心。
3.if条件判断要特别小心其边界值如<=这种情况而不单单是<。
4.编程时变量赋值要细心,如在Z字形扫描中不小心将k写成了i,结果为20分,一个变量的差距,可以让CCF少80分。即,注重for循环内变量赋值以及if语句中变量名。
5.思维要高度严谨,如一个for循环中,若需要使用到break,就必须考虑到该情况。
6.最近简单题总是出现一个运行超时的问题,检查之后,很简单,原因是,for循环二重或三重中的循环变量都是同一个i,属于粗心,CCF考试中切记,不可出现这种低级错误。
7.编程之前最好将所有可能的测试数据都写上,以考虑全面,编程提交之前,将程序题目结合代码再核对一遍,以减少未考虑的情况。如,ISBN号码这道题,因为'X'这个特殊字符输出未考虑到,就可能失分。
8.对于定义的变量,一定要保持好习惯初始化,如标记变量f,在命令行选项中,因f未初始化为0,导致整个程序才20分!
9.CCF考试,第一步,认真审题,仔细阅读题目要求以及输入输出限制,至少读2遍已核对编程中变量定义范围,如网络延时,因粗心将maxn定义为10001,其实际应满足20002,这个错误导致提交只有80分!
10.好的习惯可以减少出错率,比如,在最优灌溉中,因为return ans写错成了while循环内,导致一直错误,检查了好久。故,在编程过程中,括号一定要一对配一对,显得有层次感,这样就不会出错。同时,少使用memset函数,最优灌溉中因为使用memset对vis和d进行初始化,导致结果溢出。具体原因不清楚,暂时建议在CCF中少用memset。即用for循环就可。
11.只要涉及排序,直接用sort函数,不要自己去写排序,如杭电2000。
12.C++中输出保留n位小数,如n=2,需使用到头文件以及输出格式: #include <iomanip> cout<<setiosflags(ios::fixed)<<setprecision(2);
13.输入数据要仔细小心,如杭电2007,输入m和n两个数,求m和n之间的偶数平方之和与奇数立方之和,m未必n小。
14.在CCF第三四题,若涉及到i是全局变量还是局部变量,最好是使用局部变量吧,因为在网络延时中将i设为全局变量,导致程序AC才50分,而设为局部变量,则100。
15.若程序中涉及到比较大的数,要么用字符串处理,要么用__int64 a处理。杭电上2028求最小公倍数就是因为将__int64 s定义成了int s,导致一直错误。
16.杭电2030汉子统计,要明白,汉子占两个字节,且汉子的ASII是小于0的,即可。
17.考前将杭电2031进制转换看一下,主要用到递归思想。同时,杭电阶梯问题,a[i]=a[i-1]+a[i-2];也是递归可解决。
18.CCF中,一般都可以使用数组、结构体、标记变量来解决问题,考试时多往这方面想。当对结构体写cmp函数进行排序时,要使用三个if语句进行return,充分考虑其情况。
19.考前稍微复习下多边形公式杭电2036,CCF应该不会考这种公式水题。
20.递推典型杭电2047,考前回顾一下!再如,2048错排公式,稍微记下,以防万一,全错位排列,n个物质,重新排列顺序,使其均不在原位
a[n]=(a[n-1]+a[n-2])*(n-1);如2049运用数学公式:从N个数中取M个,取法数为N!/(M!*(N-M)!),然后再乘以这M个数都不在自己位置上的排列数,运用2048题的通项公式b[m],所以结果为b[m]*N!/[M!*(N-M)!]。
21.杭电2072单词数和CCF一二题有点类似,只不过处理的是字符串,需要高度重视这一道题!考前必看,字符串二维数组知识,利用二维字符数组进行处理。同时,不要忘记在字符串后面加上‘\0'。
22.2068错排思想可以温习下,做了很久。其实挺简单的。但CCF几乎不考这种题型。