编程之旅——编程常出现的错误(警醒)

欠伸展肢体,吟咏心自愉。这篇文章主要讲述编程之旅——编程常出现的错误(警醒)相关的知识,希望能为你提供帮助。
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)



    推荐阅读