今天又莫名其妙地水题爆零……特开一贴,记录一些有参考价值的低级错误。
1、if内的条件顺序
如stk为一个栈,if(stk.top < n && !stk.empty)就可能出错。要把优先级更高的前置条件放在前面,在出错(如栈空)时及时终止。
2、取模处理环状数组
记得特判取模后为0的情况……有时需要改为n(数组最后一个元素)
3、init()
写完之后记得在主函数里加上!!!!!!!!!!!!!!
4、关于double
%llf是long double,%lf才是double!
5、关于scanf输入char
会输入空白字符。记得将%c前面加一个空格屏蔽空白符。
6、左移右移的优先级比加减还低
所有左移右移操作尽量都加上括号。
7、关于拼写
算不上代码的错误……我之前树状数组所有的“请求”都写成了quary。
正确的写法是query或者enquiry。
8、for循环的++和--
“这tm还用再说?”“我tm怎么又卡死了?”
9、输入数组
有的一位数字的数组中间没有空格……不要一个for循环结果当成大整数录进去了
10、判断质数
常规方法,从2扫到根号n的时候一定要加等于号……否则质因子只有根号n的时候不能返回false
11、类似于八皇后问题
输出的时候要注意范围是1~N还是0~N-1
12、模数相减先加模
如前缀和处理需要取模的问题等,如相减前不加上一个模有可能会减出负数
(然后我以为是溢出debug一个小时