《算法竞赛入门经典》第七章7.1,7.2,7.3(总结)
来源:互联网 发布:金融数据库有什么后果 编辑:程序博客网 时间:2024/04/27 17:44
7.1
一般如果让你求a,b满足h(a,b)=k,k为一个固定的函数,可以通过枚举a,然后用k反向求b,来减少一层循环,两个以上情况同理。
1.技巧总结如果求abcdefgh判断他们是否互补相等,可以从0~n分别对应,然后通过从0~n一 一对i==a[i]来判断是否每一个都存在,来得出结果。
2.尽量把除法表示的关系转换成乘法,避免int截位
7.2
生成有重复和无重复的排列都可以用c++库中的next_permutation
用
sort(p,p+n)do{}while(next_permutation(p,p+n)
他的原理是每次将p按字典序增加,所以用do while,对1234…n这个处理。可以得到全部排列,如果一次变化后发现与上次序列一样则继续变化。
手写的算法,不可重复类型原理是:
如果if(cur==n)则输出,else(一定不要丢){递归}
有重复,则用c1,c2来判断能否继续增长
输出时为了避免重复输出
if(!i||p[i]!=p[i-1])
来只输出第一个
7.3
1.增量构造法就是每次将比前一个大一的放进去,这样最终输出顺序就是按照字典序排列的了
技巧:定序,将{1,2},{2,1},按从小到大排列,这样就只用输出一个{1,2}了;
2.位向量法,节点比增量构造法多的原因是因为,他需要将所有的B对应的A都判断完才输出,这样就有很多无效的状态,但很明显大部分节点都在最后一两层。
3.二进制法很简单,但是要注意1<
1 0
- 《算法竞赛入门经典》第七章7.1,7.2,7.3(总结)
- 算法竞赛入门经典 第八章总结
- 《算法竞赛入门经典》第四章总结
- 算法竞赛入门经典-刘汝佳-第七章暴力
- 《算法竞赛入门经典》-【第七章:暴力求解法】-7.3:子集生成
- 算法竞赛入门经典:第七章 暴力求解法 7.3分数拆分
- 《算法竞赛入门经典》-【第七章:暴力求解法】-7.2:枚举排列
- 算法竞赛入门经典:第七章 暴力求解法 7.2最大乘积
- 算法竞赛入门经典第七章暴力求解法7.1节第一题
- 算法入门竞赛经典第七章暴力求解法7.1.1
- 算法竞赛入门经典:第七章 暴力求解法 7.1除法
- 算法竞赛入门经典(第二版)-刘汝佳-第七章 暴力求解法 例题(6/15)
- 算法竞赛入门经典(第二版)-刘汝佳-第七章 暴力求解法 习题(2/18)
- 算法竞赛入门经典第七章暴力求解法——简单枚举(记录向)
- 算法竞赛入门经典第七章暴力求解法——枚举排列(记录向)
- 算法竞赛入门经典第七章暴力求解法——回溯(2.例题深入)
- 算法竞赛入门经典(第二章)
- 算法竞赛入门经典(第三章)
- Oracle存储过程基本语法介绍
- MySQL存储过程详解 mysql 存储过程
- 内部分享栏
- (转)Android之存储篇_SQLite数据库_让你彻底学会SQLite的使用
- 淡入淡出
- 《算法竞赛入门经典》第七章7.1,7.2,7.3(总结)
- android view事件传递总结
- 各类型取值范围
- Bootstarp 简单后台页面
- Kruskal + 并查集
- 【Spring学习】之 AOP
- VC++简单窗口
- 隐私政策
- iOS开发 navigation跳转时隐藏tabbar