算法竞赛--模板+例题
包括各种蓝桥杯、ACM程序设计算法模板及经典例题,java语言描述为主。专栏内容持续更新ing。
乔治的哥们
这个作者很懒,什么都没留下…
展开
-
竞赛算法 专栏目录
1 、 算法模板1.1 、 算法基础–模板及经典题型1.2 、 算法进阶–模板及经典题型2 、竞赛算法 – 递归(DFS、回溯、剪枝)2.1 、竞赛算法–深入递归(上)(DFS、回溯、剪枝等)2.2 、竞赛算法–深入递归(中)(DFS、回溯、剪枝等)2.3 、竞赛算法–深入递归(下)(DFS、回溯、剪枝等)3 、竞赛算法 – 动态规划...原创 2020-01-22 21:16:18 · 410 阅读 · 0 评论 -
算法基础--模板及经典题型
1 、判断闰年static boolean is (int x ){ return x%400==0 || (x%4==0 && x%100!=0)}2 、 最小公倍数// 两个数比较static int gcd(int a,int b){ return b==0?a:gcd(b,a%b);}//多个数比较3 、最大公约数static in...原创 2020-01-10 22:42:44 · 1066 阅读 · 1 评论 -
动态规划 -- 最长公共子序列(LCS)-- java
最长公共子序列(longest common sequence)和最长公共子串(longest common substring)不一样。子序列:公共序列 可以不相邻公共子串:公共序列的字符必须连续。公共子数组: 数组索引必须连续方法一:暴力法解题* 即求出所有的子序列,找出最长的。* 显然这是一个愚蠢的解法,竞赛必超时,面试必凉。* 这里就不详述了。方法二...原创 2020-08-10 16:58:40 · 552 阅读 · 0 评论 -
岛问题
一个矩阵中只有0和1两种值, 每个位置都可以和自己的上、 下、 左、 右四个位置相连如果有一片1连在一起, 这个部分叫做一个岛, 求一个矩阵中有多少个岛?举例:0 0 1 0 1 01 1 1 0 1 01 0 0 1 0 00 0 0 0 0 0这个矩阵中有三个岛解:当矩阵数量较少时,解法(使用递归)两个函数1.遍历函数:遍历矩阵,遇到为1的点,就调用感染函数...原创 2020-02-07 15:15:50 · 131 阅读 · 0 评论 -
迷宫回溯问题--java实现
/*迷宫问题: * 若要找最短路径,可改变搜索顺序,最后计算2的个数 * 原先的地图 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0...原创 2020-02-03 15:20:52 · 550 阅读 · 0 评论 -
竞赛算法--动态规划 例题详解
竞赛算法–动态规划 例题详解动态规划方法代表了这一类问题(最优子结构or子问题最优性)的一般解法,是设计方法或策略,不是具体算法本质是递推,核心是找到状态转移方程,写出DP方程。形式:记忆型递推递推举例:01背包问题钢条切割问题数组三角形问题(滚动数组)最长公共子序列问题完全背包问题最长上升子序列问题1.1 、 01背包问题题目描述:题...原创 2020-01-31 21:22:26 · 576 阅读 · 1 评论 -
动态规划 -- POJ1163 - 数字三角形
题目描述:原创 2020-01-31 15:26:27 · 207 阅读 · 0 评论 -
动态规划--01背包-详解。
01 背包问题题目描述:题目分析:原创 2020-01-29 23:51:50 · 515 阅读 · 0 评论 -
贪心算法--乘船问题(easy)
点击查看:贪心算法模块精讲题目描述:有n个人,第i个人重量为wi,每艘船的最大重量均为C,且最多只能乘两个人。用最少的船装载所有人。题目分析:贪心策略:考虑最轻的人 i ,如果每个人都无法和他一起坐船(重量和超过C),则唯一的方案是每个人坐一艘船。否则,他应该选择能和他一起坐船的人中最重的一个 j 。题解代码:public class Main{ public stat...原创 2020-01-29 01:45:25 · 3460 阅读 · 0 评论 -
贪心算法-- 部分背包问题
题目描述:有n个物体,第i个物体的重量为wi,价值为 vi 。在重量不超过C的情况下让总价值尽量高。每一个物体都可以只取走一部分,价值和重量按比例计算。求最大总价值注意:每个物体可以只拿一部分,因此一定可以让总重量恰好为C题目很容易理解,直接写代码如果打包封装内部类及内部类的方法重写部分看不懂(应加深对面向对象的学习),也可以参考此博客后半部分进行学习/*为方便理解,本题直接用样...原创 2020-01-29 01:07:09 · 2208 阅读 · 0 评论 -
贪心算法--POJ-3617-(Best Cow Line)字典序最小问题
贪心算法–POJ-3617-(Best Cow Line)字典序最小问题.题目描述://题目描述+题解分析:我踏马提交第五遍,终于AC了import java.util.Scanner;import java.util.Scanner;public class Main430 { public static void main(String[] args) { ...原创 2020-01-28 23:35:22 · 624 阅读 · 0 评论 -
竞赛算法--深入递归(中)(DFS、回溯、剪枝等)
点击查看:深入递归-12. 深度优先搜索DFS–Depth-First Searchdfs:一条路走到黑bfs:所有路口看一遍2.1 无死角搜索 I数独游戏部分和(挑战程序设计竞赛)水洼数目2.1.1 数独游戏题目描述:题目分析及代码:伪代码分析 dfs(table , x, y){ // table为数组 , x,y为坐标 if(x...原创 2020-01-20 22:17:06 · 340 阅读 · 0 评论 -
竞赛算法--深入递归(下)(DFS、回溯、剪枝等)
竞赛算法–深入递归(上)(DFS、回溯、剪枝等)竞赛算法–深入递归-(中)(DFS、回溯、剪枝等)3、回溯和剪枝回溯:递归调用代表开启一个分支,如果希望这个分支返回后某些数据恢复到分支开启前的状态 以便重新开始 ,就要用到回溯技巧全排列的交换法,数独,部分和,用到了回溯.剪枝:深搜时,如已明确从当前状态无论如何转移都不会存在(更优)解,就应该中断往下的继续搜索,这种方法称为剪枝...原创 2020-01-21 00:52:23 · 580 阅读 · 0 评论 -
竞赛算法--贪心算法 及例题详解
动态规划和贪心算法都是一种递推算法,均用局部最优解来推导全局最优解是对遍历解空间的一种优化当问题具有最优子结构时,可用动态规划,而贪心是动态规划的特例1.贪心策略简介及硬币支付问题贪心:顾眼前遵循某种规则,不断(贪心地)选取当前最优策略,最终找到最优解难点: 当前最优未必是整体最优例子硬币问题 POJ-1013区间问题及相关问题(区间调度,区间选点 POJ 1201...原创 2020-01-20 19:57:20 · 1114 阅读 · 0 评论 -
竞赛算法--深入递归(上)(DFS、回溯、剪枝等)
1、双管齐下解递归1、自上而下的递归(分治(分解、递归、合并))直观快速排序。2、自下而上的递归(递推,数学归纳,动态规划)解决简单情况下的问题推广到稍复杂情况下的问题…………如果递推次数很明确,用迭代如果有封闭形式,可以直接求解1.1 “逐步生成结果”类问题之数值型...原创 2020-01-19 02:15:33 · 521 阅读 · 0 评论 -
java实现二叉树的几种常用方法
class BiTreeNode { //创建结点二叉树 public Object data;; //设置结点元素 BiTreeNode leftChild; //设置左孩子结点 BiTreeNode rightChild;原创 2020-01-03 21:08:51 · 642 阅读 · 0 评论 -
算法进阶--模板及经典题型
1、A星寻路法A※寻路法-是一种寻找最短路径并避开障碍物的算法适用于解决迷宫问题和有障碍地图问题上代码//迷宫地图public static final int[][] MAZE = { {0,0,0,0,0,0,0}, {0,0,0,1,0,0,0}, {0,0,0,1,0,0,0}, {0,0,0,1,0,0,0}, {0,0,0,0,0,0,0},};/** ...原创 2020-01-11 15:16:21 · 211 阅读 · 0 评论