1.有时遇到定义成局部变量就AC,定义到全局就WA的情况,多半是因为这个变量每次都需要初始化,而全局的时候只被初始化一次。在决定使用局部变量还是全局变量的时候应该先思考其初始化(是否需要针对每个case都初始化)的情况。
2.字符串char *a="abcd"; 是正确的,但如果a[0]=a[0];则会出现错误,所以字符串优先考虑存为char[ ]数组的形式,或者使用c++string
3.scanf()第一注意使用“&”千万不能漏,第二scanf()不会接受" " "\t" "\n",如果字符中需要空格,使用gets()。第三,scanf()不会取出其后面的空格或者其他特殊符号,需要显式地提出,不然这些特殊符号就一直在缓冲区中,会引发下次输入的错误。%hd %hu %d %d %ld %lu其中h修饰是short的意思,l是long的意思,%f %lf %Lf分别代表float、double、long double,注意从文本输入浮点数只能用%lf 即double接收.scanf()!=EOF来判断,一般不使用scanf()!=NULL来判断,有实际经验用NULL判断会导致无限读取最后的一行数据或者其他错误。
4.从题目给的数据,大致推断算法所需要的复杂度,例如n=30以内,那么指数级的应该可以接受,枚举、回溯、搜索等算法优先考虑。n=10000,那么最多可能接受一个n^2级的算法,动态规划、贪心优先考虑,注意深入理解题意。n=100000或者更大的时候,多半考虑线性算法了,理解题意,模拟、数学方法等是优先考虑方案。
5.使用memcpy()函数的时候记得sizeof,因为memcpy默认是以char为单位的。