Debug技巧与常见代码实现问题合集
常见代码实现问题
-
对于右移运算,主要要使用
1ll<<n而不是1<<n. 防止溢 -
\(n,m\)不要写反
-
数组开小了
-
复制的相似代码该改的内容没有改,例如函数的调用
-
空if
-
过早的
break;和continue;导致部分本执行的语句被跳过 -
局部变量初始值
-
递归过程中不同深度的内容互相污染
-
忘记调用函数了
-
取模的时候加p模p
-
取模取少了
-
状态转移缺少或者重复
-
数组平移后填充内容有误
-
依赖状态的初始化函数调用顺序错误
-
比较器写反了
矩阵
-
没有初始化为单位矩阵
-
矩阵没有清零
-
自己矩阵,other矩阵,返回结果矩阵写混
图论
- 分清正图反图
调试技巧
极端数据
形式极端数据
对\(n,m\)这样的数取最小值测试
逻辑极端数据
- 我们对区间进行操作,那么我们要测试\([x,y],[x,n],[1,y],[1,n]\)的所有可能
调试顺序
-
检查初始化内容
-
检查多测
-
检查\(n,m\)循环范围是否写反
-
检查数组调用是否正确
-
检查函数下标变量是否正确
-
检查
if条件是否正确 -
检查
while条件是否正确 -
检查
for条件是否正确 -
检查数组范围
-
检查取模运算
-
检查边界是否带等号
-
检查线段树
push_down -
检查线段树
push_up

浙公网安备 33010602011771号