
算法与数据结构
文章平均质量分 65
基础算法、数据结构、ACM竞赛等
努力学习计算机的小蒟蒻
这个作者很懒,什么都没留下…
展开
-
基础算法:枚举
枚举算法介绍枚举算法是我们在日常中使用到的最多的一个算法,它的核心思想就是:枚举所有的可能。枚举法的本质就是从所有候选答案中去搜索正确的解,使用该算法需要满足两个条件:(1)可预先确定候选答案的数量;(2)候选答案的范围在求解之前必须有一个确定的集合。枚举算法简单粗暴,他暴力的枚举所有可能,尽可能地尝试所有的方法。虽然枚举算法非常暴力,而且速度可能很慢,但确实我们最应该优先考虑的!因为枚举法变成实现最简单,并且得到的结果总是正确的。枚举算法分为循环枚举、子集枚举、排列枚举三种。部分枚举算法原创 2021-02-02 20:42:27 · 711 阅读 · 0 评论 -
算法竞赛:几道比较复杂的模拟题
最近做了几道稍微复杂一点的模拟题,不算太难但考虑的情况比较多比较杂,需要细心玩具谜题(洛谷P1563)题目描述有n个玩具小人围成一圈, 已知它们的职业和朝向。现在第1个玩具小人告诉小南一个包含m条指令的谜題, 其中第z条指令形如“左数/右数第s个玩具小人”。 你需要输出依次数完这些指令后,到达的玩具小人的职业。分析实际上,问题可以看成玩具一开始在第一个小人的手上,然后有m条指令,每条指令都是把玩具传给左数/右数第s个玩具小人,求最后玩具在哪个人手里。那么,根据指令的内容和玩具的朝向,每次就可以找到原创 2021-01-27 11:57:41 · 853 阅读 · 0 评论 -
动态规划算法模板代码(背包问题相关)
01背包无优化for(int i=1;i<=n;i++){ for(int c=0;c<=m;c++) { f[i][c]=f[i-1][c]; if(c>=w[i]) f[i][c]=max(f[i][c],f[i-1][c-w[i]]+v[i]); }}一维数组优化for(int i=1;i<=n;i++){ for(int c=m;c>=0;c--) {原创 2021-01-22 22:10:48 · 198 阅读 · 0 评论