本次更新内容:2.17质因数算法 1.4编译设置纠错

目录

1 技巧

1.1 取消同步(节约时间,甚至能多骗点分,最好每个程序都写上)

1.2 万能库(可能会耽误编译时间,但是省脑子)

1.3 蓝桥杯return 0千万别忘了写!!

1.4 编译设置(Dev C++)

1.5 memset、fill填充函数

1.5.1 memset

1.5.2 fill

1.6 时间复杂度

1.6.1 常数阶 O(1)

1.6.2 对数阶 O(logn)

1.6.3 线性阶 O(n)

1.6.4 线性对数阶 O(nlogn)

1.6.5 多重循环 O(n^k)

1.7 剪枝

1.8 find函数

1.9 PI问题

1.10 C/C++帮助文档

1.11 最大空间

1.11.1 占用字节大小

1.11.2 常用数据范围

1.12 指针存字符串(了解)

1.13 日期问题

1.13.1 求日期差

1.13.2 求星期几

1.13.3 日期常用函数

1.14 字符串的精读

1.15 约瑟夫环

1.16 文件读取

1.17 输入流/输出流进制控制

1.18 setbase+setw+setfill

2 算法+数据结构

2.1 BFS(宽度优先搜索)

2.2 DFS(深度优先搜索)

2.3 最大公约数(greatest common divisor,gcd)和最小公倍数(least common multiple,lcm)

2.3.1 手写

2.3.2 套用库函数

2.4 进制转换+超大数据处理

2.4.1 十进制为媒介(常用型)

2.4.2 二进制为媒介(技巧型)(含超大数据处理)

2.5 二进制表示法

2.6 背包问题

2.7 动态规划(DP)

2.8 贪心

2.9 分治(以后更新)

2.10 数字分拆到数组中

2.11 数字和字符串的互化

2.12 排序

2.13 冒泡排序法和二分查找法(最常用)

2.14 图论

2.15 常用树的模板

2.16 快速幂算法

2.17 质因数算法

2.18 递归

2.19 STL

2.20 尺取法

2.21 倍增法(ST算法)(省赛最后看)

2.22 KMP算法

2.23 LIS算法和LCS算法

2.24 树状数组(省赛最后看)

2.25 二分法

3 C语言容易出错的问题


1 技巧

1.1 取消同步(节约时间,甚至能多骗点分,最好每个程序都写上)

ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

1.2 万能库(可能会耽误编译时间,记不住头文件就用这个)

#include 

1.3 return 0

1.4 编译设置(Dev C++)

(1)工具->编译选项->编译器->编译时加入以下命令->调成C99

(2)工具->编译选项->代码生成/优化->代码生成->语言标准

1.5 memset、fill填充函数

1.5.1 memset

按照字节对内存块进行初始化,注意只能填充0或-1

#include using namespace std;int a[10];int main(){memset(a,-1,sizeof(a));for(int i=0;i<10;i++){cout<

1.5.2 fill

可以填充任意数字

#include #include using namespace std;int main() {    int arr[10];    fill(arr, arr + 10, 2);    return 0;}

1.6 时间复杂度

蓝桥杯每一道题编译时间都限制在1s以内,遇到数据比较大的题目,往往需要降低时间复杂度。

由于蓝桥杯评测系统是根据通过样例数来评分,所以我们做题时一定要注意约定样例取值范围。

例题:K倍区间(暴力法只能通过部分样例,所以要用更好的算法)

(1条消息) K倍区间(蓝桥杯2017年第八届省赛B组第十题)(C/C++)_菜只因C的博客-CSDN博客(4条消息) 货物摆放(蓝桥杯C/C++省赛)_菜只因C的博客-CSDN博客

1.11 最大空间

1.11.1 占用字节大小

类型32位计算机64位计算机
char11
short int22
int44
long int48
long long int88
char*48
float44
double88

1.11.2 常用数据范围

类型范围估计值
char-128~+127
short-32767~+327683*10^4
unsigned short0~+655366*10^4
int=long-2147483648~+21474836472*10^9
unsigned int0~+42949672954*10^9
long long-9223372036854775808~+92233720368547758079*10^18

1.12 指针存字符串(了解)

这个比赛很少用指针,如果想要存储字符串,用指针也是一个不错的选择(直接可以用string类避免用指针)

//指针数组存储字符串列表#include const int max = 5;int main(){ const char *names[] = {  //定义指针数组,存储字符串列表 "Zhang San",     //每个元素都是双引号括起来的 "Li Si", "Wang Wu", "Su Wukong", "Tang Er", };  int i=0; for(i=0;i<max;i++){  printf("Value of names[%d] = %s\n",i,names[i]); // 注意 %s } return 0;} 

1.13 日期问题

1.13.1 求日期差

格中输入:

回车:

注意:计算器中也可以计算日期差

1.13.2 求星期几

在一个格中输入日期:

在另一个格中输入:

(第一个参数表示日期所在位置,第二个参数表示输出样式(会有提示))

回车:

1.13.3 日期常用函数

日期部分处理(C/C++)_菜只因C的博客-CSDN博客日期部分处理(C/C++)https://blog.csdn.net/m0_71934846/article/details/129697869" />(8条消息) 字符串的特殊读取——基于蓝桥杯两道题目(C/C++)_菜只因C的博客-CSDN博客(11条消息) 约瑟夫环(蓝桥杯决赛C/C++)_菜只因C的博客-CSDN博客购物清单(蓝桥杯C/C++省赛)_菜只因C的博客-CSDN博客购物清单(蓝桥杯C/C++省赛)https://blog.csdn.net/m0_71934846/article/details/129333108" />(1条消息) 全球变暖(蓝桥杯2018年省赛B组试题I)(C/C++)_菜只因C的博客-CSDN博客(2条消息) 跳马(蓝桥杯算法训练C/C++)_菜只因C的博客-CSDN博客(2条消息) 全排列(C/C++)(DFS)_菜只因C的博客-CSDN博客_全排列c++dfs(6条消息) DFS合集(蓝桥杯C/C++)_菜只因C的博客-CSDN博客(8条消息) 任意进制转换成十进制/十进制转换成任意进制(ASCII码法)(C/C++)_菜只因C的博客-CSDN博客十六进制转八进制+超大数据处理(蓝桥杯基础练习C/C++)_菜只因C的博客-CSDN博客十六进制转八进制+超大数据处理(蓝桥杯基础练习C/C++)https://blog.csdn.net/m0_71934846/article/details/128745875" />(8条消息) 蓝桥杯试题 算法训练 无聊的逗(C/C++)_菜只因C的博客-CSDN博客(3条消息) 背包问题代码合集(C/C++)_菜只因C的博客-CSDN博客(1条消息) 拿金币(蓝桥杯算法训练)(C/C++)_菜只因C的博客-CSDN博客包子凑数(蓝桥杯2017年省赛B组试题H)(C/C++)_菜只因C的博客-CSDN博客包子凑数(蓝桥杯2017年省赛B组试题H)(C/C++)https://blog.csdn.net/m0_71934846/article/details/128434225" />(2条消息) 把一个数字分拆存到数组内(C/C++)_菜只因C的博客-CSDN博客(2条消息) 超级质数(蓝桥杯C/C++算法赛)_菜只因C的博客-CSDN博客(4条消息) 找字符串中最大字符(三种快速方法)_求字符串中最大的字符_菜只因C的博客-CSDN博客冒泡排序法和二分查找法(C/C++)_菜只因C的博客-CSDN博客冒泡排序法和二分查找法(C/C++)https://blog.csdn.net/m0_71934846/article/details/128757285" />图论(入门版)_菜只因C的博客-CSDN博客蓝桥杯常用树模板(C/C++)_菜只因C的博客-CSDN博客蓝桥杯常用树模板(C/C++)https://blog.csdn.net/m0_71934846/article/details/128764616" />快速幂算法(C/C++)_菜只因C的博客-CSDN博客质因数算法(C/C++)_菜只因C的博客-CSDN博客质因数算法(C/C++)https://blog.csdn.net/m0_71934846/article/details/129732458" />直接或间接调用自身而产生的重入现象。

在计算机编程里,递归指的是一个过程:函数不断引用自身,直到引用的对象已知。

使用递归解决问题,思路清晰,代码少。但是在主流高级语言中(如C语言、Pascal语言等)使用递归算法要耗用更多的栈空间,所以在堆栈尺寸受限制时(如嵌入式系统或者内核态编程),应避免采用。所有的递归算法都可以改写成与之等价的非递归算法。

递归的重点是找到递归表达式

例1:阶乘

#include using namespace std;int f(int n){if(n==1){return 1;}return n*f(n-1);}int main(){cout<<f(10);return 0;}

例2:汉诺塔

汉诺塔+汉诺四塔(C/C++)_菜只因C的博客-CSDN博客汉诺塔(C/C++)https://blog.csdn.net/m0_71934846/article/details/128796546" />(3条消息) 斐波那契数列(C/C++)_菜只因C的博客-CSDN博客(2条消息) STL使用方法(C++)_菜只因C的博客-CSDN博客(6条消息) 尺取法(C/C++)_菜只因C的博客-CSDN博客KMP算法模板(C/C++)_菜只因C的博客-CSDN博客KMP算法模板(C/C++)https://blog.csdn.net/m0_71934846/article/details/128914941" />https://blog.csdn.net/m0_71934846/article/details/128887981?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22128887981%22%2C%22source%22%3A%22m0_71934846%22%7Dhttps://blog.csdn.net/m0_71934846/article/details/129054635?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22129054635%22%2C%22source%22%3A%22m0_71934846%22%7D几个C语言容易忽略的问题_菜只因C的博客-CSDN博客几个C语言容易忽略的问题https://blog.csdn.net/m0_71934846/article/details/129242180?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22129242180%22%2C%22source%22%3A%22m0_71934846%22%7D