编程之旅——编程常出现的错误(警醒)
Posted fanxinglanyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程之旅——编程常出现的错误(警醒)相关的知识,希望对你有一定的参考价值。
1,只定义了需要输入的整数n,却没有输入它(scanf("%d", &n));
2,使用一个数组时,它的原值已经在数值处理中被更改了,不是原值(此时需要设置一个临时变量temp,把数组值付给它,对它进行操作);
3,输出固定字符时,打错了,例如题目需要输出None,却输成了NOne;
4,出现段错误,是访问了非法的内存,一般情况是数组长度设置过小或是访问时数组越界;
5,用fgets输入字符串时,使用strlen计算长度,一定要减1;
6,括号不对称(error: C++ requires a type specifier for all declarations);
7,scanf()整数后,使用fgets,一定要先使用getchar()吸收换行符;
解题详解:
1,最
a,(搜索:深【递归】、宽【队列】(穷举所有的可能性)——(变化的次数)(状态转移的次数、枚举【循环】)穷举
b,动态规划
c,贪心
d,闭式(公式)
2,解题金字塔
阅读——思维:解题方向——工具和技巧——效率优化——细节与调试
3,算法题五种解法
a,举例法:具体例子,到一般规则(公式符号化)
b,模式匹配法:相似问题,到现有问题(经典的变体)
c,简单推广法:从简化版,到复杂版(修改约束条件)
d,简化构造法:从n=1开始(递推或递归)
e,数据结构头脑风暴:链表、数组、二叉树、堆、栈、队列
前缀和?树状数组?区间树?
4,模版需要记住的
1)快速幂取模运算
2)二分法(查找有序序列给定数x(对于下标从0开始,【left,right】——【0,n - 1】);
⚠️:left <= right
查找有序序列第一个满足某条件元素的位置(初值必须覆盖所有值【对于下标从0开始的数组,【left,right】——【0,n】);
⚠️:left < right(查找有序序列第一个满足条件的元素的位置(初值必须覆盖所有值,left比最小值小一)【left,right】——【-1,n】),
⚠️:left + 1 < right
3)two pointers
⚠️:进入函数前要让a对m取模
5,特殊写法
1)eps = 1e-5等价于10^-5
const double PI = acos(-1.0)
int INF = 0x7fffffff 是int上限
6,算法优化
1)dfs对于重复子问题的求解,可以使用动规数组或者记忆型递归
2)
以上是关于编程之旅——编程常出现的错误(警醒)的主要内容,如果未能解决你的问题,请参考以下文章
我的C/C++语言学习进阶之旅C++编程常出现错误:Undefined Reference的一些常见情况分析
我的Android进阶之旅NDK开发引入第三方so库(比如assimp和opencv库)常出现的几个问题:missing and no known rule to make it等
我的Android进阶之旅NDK开发引入第三方so库(比如assimp和opencv库)常出现的几个问题:missing and no known rule to make it等