
算法
呼hu呼
hu_tai_zhang
展开
-
桥本分数式-DFS法-Java
【问题描述】将 1-9不重复地赋给不同的 9个元素 ,实现形如 a/bc+d/ef=g/hi 的形式: 例:1/26+5/78=4/39 1/32+5/96=7/84 (注意:1/26+5/78=4/39 和 5/78+1/26=4/39 只能算一种解) 求满足条件的解共有多少个?【解决思路】首先想到回溯和DFS,这里选择了类全排列的DFS。可以设置一个num数组存放这些不重复的数字,此时可以类比全排列方法,使用数组访问法或者是交换法进行排列(两种方法具体点击这里)。此处我们选择交换法,因为两者难度和原创 2020-06-22 20:41:57 · 1251 阅读 · 1 评论 -
数塔三角形问题的三种解法-(递归,递归hashmap优化,动态规划)
例题描述:设有一个三角形的数塔,顶点为根结点,每个结点有一个整数值。从顶点出发,可以向左走或向右走,求出从顶到底连起来的最短路径,如图所示:(对于节点中的数据可以自己定义)解题思路:一、先思考是否可以用递归解决,这道题明显可以使用dfs递归算出所有可能性,然后求出最短路径。对于上图的递归而言,应从上往下走,2->3或2->4,3->6或者3->5等(即...原创 2020-03-31 17:51:35 · 6068 阅读 · 1 评论 -
Java——蓝桥杯基础练习回形取数
问题描述 回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。输入格式 输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。输出格式 输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。样例输入 ...原创 2020-03-07 22:54:14 · 774 阅读 · 2 评论 -
生成排列(全排列)的两种写法
问题简述:输出任意各自然数(可不连续)所有不重复的排列,即全排列,要求所产生的任一数字序列中不允许出现重复的数字。解决方法:1.交换法 2.数组访问法,两种方法都是由dfs回溯完成,也可以使用剪支。文末将给出DFS的套路模板一.交换法 方法是先固定一个元素,然后将固定的数字与其他元素进行交换见下图import java.util.Scanner;publi...原创 2020-03-06 23:25:10 · 3863 阅读 · 0 评论 -
求任意个数字的最小公倍数(LCM)和最大公约数(GCD)
其实就是不断地递归和for循环,结合代码来看:(前面看不懂请往下翻!)import java.util.Scanner;public class 多个数字求GCD和LCM { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.nextL...原创 2020-02-24 00:04:57 · 561 阅读 · 0 评论 -
简谈求2个及多个数字的最小公倍数(LCM)和最大公约数(GCD)
问题一:求两个数字的最大公约数(GCD)及其最小公倍数(LCM)问题二:求任意个数字的最大公约数(GCD)及其最小公倍数(LCM)其实问题二就是问题一的重复与递归形式。相信大家都了解过很多求GCD和LCM的方法,但个人最推荐辗转相除法(即欧几里得算法),思想简单,代码简短易于理解。本文先看两个数字的GCD与LCM的代码和问题二的代码。涉及到原理,想仔细看任意个数字的GCD与LCM的请点...原创 2020-02-23 23:44:33 · 547 阅读 · 0 评论 -
由全排列问题简谈DFS
先贴简单的全排列问题地址 : https://www.luogu.com.cn/problem/P1706 本题说的是n的全排列本题是最典型的最入门的DFS问题,可采用回溯法。一眼看觉得很简单,第一次动手写发现许多细节问题,也理解了很长时间,所以在此分享一下个人的理解(PS:很多大佬发的题解确实没有仔细地说明缘由和代码的层次问题,我这个菜鸡还是说一下吧)首先要知道DFS的原理,如果不理解的...原创 2020-02-22 17:35:12 · 701 阅读 · 2 评论 -
【Java】蓝桥杯第六届B组 第二题 “立方变自身”
题目立方变自身观察下面的现象,某个数字的立方,按位累加仍然等于自身。1^3 = 18^3 = 512 5+1+2=817^3 = 4913 4+9+1+3=17...请你计算包括1,8,17在内,符合这个性质的正整数一共有多少个?本题其实有两个难点:1.如何确定整数的范围,即数字循环到哪里结束? 2.变量的重置首先是整数的范围,从小往大想,一般这种题目...原创 2020-02-19 15:35:11 · 921 阅读 · 0 评论 -
算法(5) -【Java】洛谷P1598 垂直柱状图
题目描述写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过100个字符),然后用柱状图输出每个字符在输入文件中出现的次数。严格地按照输出样例来安排你的输出格式。输入格式四行字符,由大写字母组成,每行不超过100个字符输出格式由若干行组成,前几行由空格和星号组成,最后一行则是由空格和字母组成的。在任何一行末尾不要打印不需要的多余空格。不要打印任何空行。本题两个...原创 2020-02-04 13:31:24 · 354 阅读 · 0 评论 -
算法(4) -【Java】洛谷P1308 统计单词数
题目描述文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1 ),如果给定单词仅是文章中某一单词的...原创 2020-02-03 10:20:52 · 423 阅读 · 0 评论 -
算法(2) - 【Java】埃氏筛法求1-n之间的所有素数
本题的思路为将数组中所有数据标志量先初始化为0 ,再通过for循环遍历,将非素数的标志量置为1,最后再遍历输出标志量为0的数据。import java.util.Scanner;public class P3912素数个数 { public static void main(String[] args) { int num=0; Scanner sc = new Scanner(...原创 2019-12-16 15:00:56 · 605 阅读 · 0 评论 -
算法(1) - 【C】实现实心和数字菱形
作为一个菜鸡,我从今天开始记录自己的程序学习进度。争取每几天就写一篇博客吧。今天是菱形的实现!第一步,应该明确菱形对角线有多长,也就是高度n,一般都为奇数,如果是偶数,我们将n+1当作高度。第二步,明确应该用C还是JAVA等语言。下面将C与JAVA编程都实例一次。第三步,开始编程。C语言编写#include <stdio.h>#include <...原创 2019-09-14 23:58:24 · 736 阅读 · 0 评论 -
算法(3) -【Java】洛谷P1200 [USACO1.1]你的飞碟在这儿
题目描述众所周知,在每一个彗星后都有一只UFO。这些UFO时常来收集地球上的忠诚支持者。不幸的是,他们的飞碟每次出行都只能带上一组支持者。因此,他们要用一种聪明的方案让这些小组提前知道谁会被彗星带走。他们为每个彗星起了一个名字,通过这些名字来决定这个小组是不是被带走的那个特定的小组(你认为是谁给这些彗星取的名字呢?)。关于如何搭配的细节会在下面告诉你;你的任务是写一个程序,通过小组名和彗星名来决...原创 2020-02-01 16:27:54 · 437 阅读 · 0 评论