数据结构与算法(Java)
文章平均质量分 69
用Java实现数据结构与算法相关知识点
Hoshizola
尽人事,听天命
展开
-
2017蓝桥杯省赛JavaB组部分题目及解答
第二题 标题:纸牌三角形 A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算)。要求每个边的和相等。 下图就是一种排法(如有对齐问题,参看p1.png)。 这样的排法可能会有很多。 如果考虑旋转、镜像后相同的算同一种,一共有多少种不同的排法呢? public class _02纸牌三角形 { static int ans; public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5, 6, 7原创 2021-06-16 12:32:43 · 236 阅读 · 0 评论 -
dfs相关练习题
部分和 /* * 给定整数序列a1,a2,...,an,判断是否可以从中选出若干个数,使它们的和恰好为k * 输入: * n=4 * a={1,2,4,7} * k=13 * 输出: * Yes(13=2+4+7) */ public class _部分和 { private static int kk; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n原创 2021-03-15 08:32:49 · 277 阅读 · 0 评论 -
算法笔记(二):动态规划
一、基本思想 动态规划与分治法由相似之处,动态规划在求解子问题时也需要将原问题分解为子问题,首先求子问题的解,然后在此基础上求解原问题的解。然而,分治法中子问题与与原问题的性质相同并且相互独立,而动态规划产生的子问题是相互重叠的并非相互独立。因此,如果使用分治法求解子问题就需要重复计算很多子问题导致运算效率降低。而动态规划采取了一种策略,即在求解子问题时一旦得到这个子问题就记录到一个表格中而不是丢弃,未来一旦需要用到这个子问题的解只需回到表格中以常数时间获取这个子问题的解即可,是一种自底向上的求解方式,具有原创 2021-03-15 08:29:48 · 556 阅读 · 0 评论 -
算法笔记(一):递归与分治法
一、基本思想 (一)分治法的基本思想是:将规模较大的、不容易解决的大问题,分割为性质相同但规模较小的子问题,若子问题易于求解,则分别求解子问题,然后由子问题的解构造出原问题的解。适合用分治法求解的问题一般都具有以下基本特征: (1)该问题可以分解为若干个规模较小的子问题; (2)该问题的规模缩小到一定的程度后容易求解; (3)各个子问题相互独立; (4)子问题的解可以合并为原问题的解。 分治法求解问题的步骤主要包括三步: (1)分解(Divide)。当问题的规模超过某一阈值时,将问题分解为规模较小但性质与原原创 2020-10-26 23:27:29 · 1146 阅读 · 1 评论 -
蓝桥杯之递归
什么是递归 递归是算法中一种非常重要的思想。递归,简单来说就是在函数中存在着调用函数本身的情况。形式是 void f(参数){ f(参数) } 进一步剖析递归,先有“递”再有“归”。“递”的意思是将问题拆解成子问题来解决,子问题再拆解成子子问题,…,直到被拆解的子问题无需再拆解成更细的问题,也就是拆分成可以求解的问题。“归”就是最小的问题解决了,那么它的上一层问题也就解决了,上一层的子问题解决...原创 2020-05-01 17:51:04 · 563 阅读 · 0 评论 -
蓝桥杯之位运算
相关用法 判断奇偶性 获取二进制位是1还是0 交换两个整数的值以及求整数的绝对值 相关习题 习题一 找出唯一成对的数 1-1000这1000个数放在含有1001个元素的数组中,只有唯一的一个元素值重复,其他均只出现一次。每个数组元素只能访问一次,设计一个算法,将它找出来;不同辅助存储空间,能否实现? public class _唯一成对的值 { public static void main...原创 2020-04-30 21:31:56 · 236 阅读 · 0 评论 -
用Java实现的几种常见排序算法
冒泡排序 冒泡排序的基本思想是:通过对待排序序列从前往后(从小标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使得值较大的元素逐渐从前往后移动,就像水底下的气泡一样逐渐向上冒。 优化:因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换就说明序列有序。因此要在排序过程中设置一个flag判断元素是否进行过交换,从而减少不必要的比较 冒泡排序的特点: 长度为n的数组...原创 2020-04-28 22:52:55 · 178 阅读 · 0 评论