算法学习——走在放弃的路上
算法笔记
一、入门算法
1.算法必备知识
数据结构
STL
数论
2.五大常用算法思想
2.1递归&分治
2.2动态规划
2.3贪心
2.4回溯
常用模板
void dfs(int k){//k代表递归层数,或者要填几个空
if(所有空都填完了){
判断最优解/记录答案;
return ;
}
for(枚举这个空能填的选项)
if(这个选项是合法的){
记录下这个空(保存现场);
dfs(k+1);
取消这个空(恢复现场);
}
}
应用:
BFS找最短路径
2.5分支界定
3.基础算法
3.1暴力求解
枚举
- 故名思意就是一个个列举出来啦
样例1:
除法
输入正整数n,按从小到大的顺序输出形如abcde/fghij=n的表达式,其中a~ j恰好为数字0~9的一个排列(可以有前导0),2<=n<=79
样例输入:
62
样例输出:
79546 / 01283 = 62
94736 / 01528 = 62
思路:枚举fghij(可以避免通过除法计算另一个数),通过n*fghij来计算得到abcde,再判断是否每个数字出现一次。