自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 问答 (2)
  • 收藏
  • 关注

原创 1. 蓝桥杯国赛训练营--深度优先搜索--迷宫游戏

题目:思路:代码:import java.util.ArrayList;import java.util.Scanner;public class Main { /*测试数据13 4S**.....***T测试数据25 6....S*.***...*..*.*.***..T.... * */ static char[][] g; static int n;//行 static int m;//列 static int[][] v;//访问数

2020-10-31 22:30:37 173

原创 7.2020蓝桥杯省赛Java研究生组--寻找2020年02月02日之后的第一个回文日期

import java.text.SimpleDateFormat;import java.util.Calendar;public class Main { /* * 要求:找到2020 02 02后面的第一个回文日期 * 思路:(1)从该年依次往后累加,将得到的日期格式化为yyyy-MM-dd * (2)将该日期转换为字符数组 * (3)判断该字符数组是不是回文 * */ public static void main(String[] args){ Calendar.

2020-10-31 13:14:12 863

原创 6.蓝桥杯Java--- 日期问题

历届试题 日期问题时间限制:1.0s 内存限制:256.0MB问题描述  小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在1960年1月1日至2059年12月31日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应。比如02/03/04,可能是2002年03月04日、2004年02月03日或2004年03月02日。给出一个文

2020-10-30 13:26:25 402

原创 5.高斯日记

题目标题: 高斯日记​ 大数学家高斯有个好习惯:无论如何都要记日记。​ 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210​ 后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?​ 高斯出生于:1777年4月30日。 在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。​ ...

2020-10-30 11:20:10 268

原创 4.java日期中常用的方法

(1)日期格式化关键代码:SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");//格式化2020-10-30String str = s.format(c.getTime());//获取c的日期,并对其格式化import java.text.SimpleDateFormat;import java.util.Calendar;public class Main { public static void main(String

2020-10-30 11:05:04 104

原创 3.判断某年是否包括黑色星期五(每个月的13日和星期五同一天),并给具体日期

依次遍历当前年份的每一月,判断该月的13日是否是星期五注意:日期格式化String str = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Scanner;public class Main { //计算2020年10月30(对应星期5) //1星期天, 2星期..

2020-10-30 10:32:21 490

原创 2.求出给定日期是星期几

计算日期2020-10-30对应星期几import java.util.Calendar;import java.util.Scanner;public class Main { //计算2020年10月30(对应星期5) //1星期天, 2星期一,3星期2,....,6星期5,7星期六 public static void main(String[] args) { Calendar c = Calendar.getInstance(); c.set(Calendar.YEA.

2020-10-30 10:17:48 220

原创 1.判断是不是闰年

import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int year = sc.nextInt(); if(isR(year)) { System.out.println(year+"是闰年"); }else { System.out.println(year+"不是闰年")..

2020-10-30 10:00:46 134

原创 8.15 著名问题---最长递增子序列的长度 以及 小结

解法一:暴力法import java.util.ArrayList;import java.util.Arrays;import java.util.Scanner;public class Main { /* * 思路:暴力法 * 依次将数组中的元素作为开头,寻找第一个比其大的元素i1,再从i1开始向后查找第一个比其大的...,直到查完所有元素 输入数据:4 2 3 1 5 * */ public static void main(String[] args)..

2020-10-30 09:47:49 231 1

原创 8.14 动态规划问题-------完全背包问题:每个物体可选多个(01背包问题的升级:每个物体只选一次)

问题:

2020-10-30 08:37:42 317

原创 8.13 动态规划例题--最长公共子序列

问题:即按两个串的顺序,找出相同的子序列(可跳跃查找)

2020-10-30 08:11:36 210

原创 8.12 动态规划例题---数字三角形。 对于动态规划,根据依赖关系,先求被依赖的部分

题目:解法一:递归import java.util.Arrays;import java.util.Scanner;public class Main { /* * 思路: * 通过深度优先遍历,从上往下进行查找 * 每次将当前点作为起点,寻找最长路径。该点+该点往后的最长路径测试数据:573 88 1 02 7 4 44 5 2 6 5 * */ static int n; //行数 static int[][] g; //存储三角形 stat

2020-10-29 21:45:33 126

原创 8.11 动态规划例题-----钢条切割(从递归--> 记忆型递归---->动态规划)

题目:已知钢条总长i 和 每种长度下的钢条价格,让我们找到一种切割方案,使得价格最大解法一:递归import java.util.Arrays;import java.util.Scanner;public class Main { /* * 思路:假设钢条长度为L * 依次固定前面的切割点为1....L,计算最大价值 * * 测试数据101 2 3 4 5 6 7 8 9 101 5 8 16 10 17 17 20 24 30 * */ sta

2020-10-29 13:12:50 291

原创 8.10 动态规划例题---01背包问题之dp(动态规划)解法

分析:从第一行开始从左向右查找对于物品3,容量4要该物品:f(3,4) = 物品价值+f(物品3的上一个物品2,容量4-物品重量);不要该物品:f(3,4) = f(物品3的上一个物品,容量4)最后取max(要f,不要f)代码:import java.util.Arrays;import java.util.Scanner;public class Main { /* * 思路:(1)计算之前先查询记忆数组rem中是否已存在改记录 *

2020-10-29 11:04:46 304

原创 8.9 动态规划简介 及 01背包问题

动态规划简介:01背包问题:对于每个物品只有选和不选两种情况(与上题不同之处:物体不可分)代码:import java.util.Arrays;import java.util.Scanner;public class Main { /* */ static int n; static int[] ws; static int[] vs; static int cnt=0; public static void main(String[] args) {.

2020-10-29 10:20:51 177

原创 8.8 乘船问题 以及 贪心策略思路总结

乘船问题:即,对每个人的重量进行从小到大排序,(从两端分别进行组合,左端指针s,右端指针e)每次选择重量最大和最轻的两个人一起乘船s++ e-- 船数+1,还需过河的人数-2 如果超重,则重量最大的人单独一艘船 e--,船数+1,还需过河的人数-1代码:import java.util.Arrays;import java.util.Scanner;public class Main { /* */ public static void main(String..

2020-10-29 09:04:52 870

原创 8.7 贪心策略例题---背包问题(最优装载问题、部分背包问题)

问题1:最优装载问题(简单)代码:import java.util.Arrays;import java.util.Scanner;public class Main { /* */ public static void main(String[] args) { //(1)输入相关数据 Scanner sc = new Scanner(System.in); int n = sc.nextInt();//物体数 int c = sc.nextInt();//

2020-10-29 08:37:39 631

原创 8.6 贪心策略---字典序最小问题

输入:6ACDBCB输出:ABCBCD代码:import java.util.Arrays;import java.util.Scanner;public class Main { /* 思路:以s=ACDBCB为例 * (1)首先,将字符s逆置为 s'=BCBDCA * (2)然后,依次比较s与s'(直到其中一个字符串的长度为0) * (2.1)如果s<s',则将s的第一个字母加入结果集res,去掉s的第一个字符 ..

2020-10-29 07:52:04 145

原创 8.5 贪心策略--区间覆盖问题

题目要求:找出覆盖线段T所需的最少区间数目首先,将所有结束时间 <T开始时间(左侧) 以及 所有开始时间>T结束时间(右侧) 的区间排除掉分析:例题:即:农夫分配N头牛工作,他把一天分成T个时间段,每头牛只在1~T之间的某些时间段工作需要我们找出:能够完成1~T时间段内工作,所需最少的牛的数量(即相当于:找出覆盖线段(起点1,终点T)所需的最少区间)输入:第一行(两个数):牛总数N 总时间段T(即相当于需要覆盖线段的结束点)接下来N行(每行两个..

2020-10-29 07:14:45 317

原创 8.4 贪心策略例题---区间选点问题

例题1:在区间内找尽可能少的点,能够命中所有区间也是对开始和结束时间排序(结束时间从小到大排),每次选取结束时间点作为一个点,命中的区间数最大如果选取一个区间的终点,命中了多个区间,接着再从未命中区间的终点开始选取点例题2(在上题基础上的提高):要求每个区间有多个点输入:n(表示n个区间)接下来n行输入 (每行三个数)每个区间的开始时间 结束时间 含有点的个数输出:最少需要多少点例如输入:输出:import java.util.

2020-10-28 17:13:52 383

原创 8.3 贪心策略---区间调度问题

import java.util.Arrays;import java.util.Scanner;public class Main { /* *思路:每次找结束时间最早的任务 * 在当前任务结束后,如果后面结束时间最早的任务有多个,则选开始时间最早的 *难点:分别对开始和结束时间排序 */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); ...

2020-10-28 16:15:58 152

原创 8.2 贪心策略例题---快速渡河问题(没看懂!)

即:有N个人想要过河,只有一艘船,并且一艘船一次最多只能载两个人。每个人划船的速度不一样,船的速度取两者中最慢的速度。(即过河时间最大的)找到一种过河策略,使得所有人过完河所用的时间最短输入:样例数T总人数N每个人过河的时间输出:过河需要的总时间4个人过河分析:...

2020-10-28 15:00:58 1496

原创 8.1 贪心策略简介 及 硬币支付问题

贪心策略只考虑眼前最优例题:硬币支付问题import java.util.Scanner;public class Main { /* *思路:每次选则金额最大的加入 */ static int n;//需要的总金额 static int[] res=new int[6]; static int[] money= {1,5,10,50,100,500};//所有金额 public static void main(String[] args) { S...

2020-10-28 13:41:26 135

原创 7.10 第7章小结

2020-10-28 13:14:54 115

原创 7.9 dfs竞赛题-----困难的串

import java.util.Scanner;public class Main { /* *思路:每次按字典序往前缀中加字母,如果合法,就将字母加入,并打印 和 记录当前的已找到的困难串顺序 *(1)dfs(prefix) 初始时前缀prefix="" * 依次按序遍历前l个大写字母 * 判断将当前字母加入前缀后是否合法(即是否为困难串) * 如果合法,则将该字母加入前缀,并打印 和 cnt++(记录已找到困难串的个数) * 继续dfs(新的...

2020-10-28 12:53:32 170

原创 7.8 dfs竞赛题----素数环(算法竞赛入门经典)

例如:对于序列1 4 3 2 5 6使用深搜,提前将不符合要求的排序剪枝伪代码代码:import java.util.Scanner;public class Main { /* *思路: *(1) 首先设置数组res,记录合法的序列,res[0]=1 *(2) 从dfs(k)开始深搜,(从k=0开始,k表示当前res中需确定元素的下标位置) *(3)dfs(k) * (3.1)针对当前的k,依次对比1~n的所有数j,通过check()判断..

2020-10-28 11:19:02 262

原创 7.7 回溯和剪枝小结----n皇后问题(深搜)

剪枝:在递归之前进行if判断,如果不满足限定条件,则剪枝例题:n皇后问题例如4皇后问题(依次考虑每一列,分别将第一个皇后放在a[0][0]、a[0][1]、a[0][2]、a[0][3])可得最后只有良种合法的排列方式伪代码import java.util.Scanner;public class Main { /* * n皇后问题思路 * (1)首先针对每一行进行dfs深搜,用res[i]记录i行中存在元素的列 * (2)dfs搜索(i行,..

2020-10-28 09:54:42 440

原创 7.6 dfs竞赛例题---水洼数(经典题!最后背下!)

import java.util.Scanner;public class Main { /*思路: * (1)从头开始进行遍历,寻找第一个积水W * (1.1)从该处进行dfs遍历, * 寻找其8个方向是否有积水W,如果存在将其改为陆地.(避免重复访问), 继续进行遍历。 * (1.2)每完成一次dfs遍历,就遍历完了一片水洼 * 对水洼进行计数 *注意: * (1)为了避免重复访问,每遍历完一个积水...

2020-10-28 08:50:24 329

原创 7.5 dfs竞赛题----部分和(挑战程序设计竞赛)

import java.util.ArrayList;import java.util.Arrays;import java.util.Scanner;public class Main { static int n; //元素个数 static int[] a; //元素数组 static int k; //需得到的数字 static ArrayList<Integer> res = new ArrayList(); public static void main(St...

2020-10-28 07:59:49 147

原创 7.4 dfs例题-----数独游戏

题目:即每一行、每一列、每一3*3的格子都含有1~9的全部数字,且不重复解析:递归求解。 每次确定一个位置的数字,就一路走到底或者中间数字不合法,再返回上一层继续查找import java.util.Scanner;public class Main { /* * 测试数据:8000000000036000000700902000500070000000457000001000300010000680085000...

2020-10-27 21:30:11 410

原创 7.3 封闭形式的直接解-----汉诺塔移动次数、斐波那契数列第n项、上楼梯

(1)汉诺塔移动次数(n层汉诺塔)递推关系:f(n)=2f(n-1)+1;边界条件:f(1)=1;(2)上楼梯(一次可上1,2,3阶)递推关系:( 第n阶可选的方案)f(n)=f(n-1)+f(n-2)+f(n-3)边界条件:f(0)=1; f(1)=1;f(2)=2;(3)上楼梯(共n阶,一次可上1,2,3,...,n阶)上第n阶的方案数:f(n) = 2^(n-1)...

2020-10-27 15:53:21 627

原创 7.2逐步生成结果类问题之 非数值型 ---- 第7章 深入递归(深搜,回溯,剪枝等)----求合法括号、子集、全排列

例1 合法括号方法一:递归import java.util.HashSet;import java.util.Scanner;import java.util.Set;public class Main { /* * Set集合去重复 * */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); Set&l..

2020-10-27 10:39:45 177

原创 7.1逐步生成结果 类问题之 数值型 ---- 第7章 深入递归(深搜,回溯,剪枝等)

例1. 上楼梯分析:方法一:递归import java.util.Scanner;public class Main { static int cnt=0; static final int mod=1000000007; /* 0 1 * 1 1 * 2 2 * 3 4 * 4 7 * */ public static void main(String[] args) { Scanner sc = new Scanner(Syste...

2020-10-27 10:03:48 112

原创 2018省赛JavaA组8题---全球变暖(编程)

注意:岛屿完全淹没,也就是指岛屿上的每一片陆地都与海洋相连思路:遍历每一座岛屿(连通的多片陆地)。如果遍历完某座岛屿,陆地的数量和与海洋相邻的陆地数量一致,则该岛屿会被全部淹没。(通过访问标记数组,避免重复访问)import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;public class TestOne { static Scanner sc = new Scanner(Syste...

2020-10-15 11:07:40 258

原创 2018省赛JavaA组6题---航班时间(编程)

思路:通过观察样例的输入输出,输出(即飞行时间)= 【(到达时间-出发时间)+(返回时的出发时间-到达时间)】/2import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Scanner;public class TestOne { /*测试数据 * 217:48:19 21:57:2411:05:18 15:1...

2020-10-15 09:04:01 487

原创 2018省赛JavaA组4题----方格计数(填空)

public class TestOne { public static void main(String[] args) { /* * */ int N=1000; int ans=0; for(int i=1;i<N;i++) { for(int j=1;j<N;j++) { if(i*i+j*j<=1000*1000) { //比较每个i,j对应的格子是否超过半径 ans++; } } } Syst...

2020-10-15 08:05:16 126

原创 2018省赛JavaA组---复数幂(填空)

import java.io.File;import java.io.FileNotFoundException;import java.io.PrintStream;import java.math.BigInteger;import java.util.Calendar;public class TestOne { public static void main(String[] args) { /* * * */ BigInteger a = BigI...

2020-10-14 22:42:30 161

原创 2018省赛JavaA组---星期一(填空)

import java.util.Calendar;public class TestOne { public static void main(String[] args) { /* * 思路:判断2000.12.31是星期几(找出最后一个星期一) ,这个时间段的总天数减6(最后一个星期一),到下个星期一,每次减7,统计星期一的总次数 * */ //(1).判断2000.12.31是星期几(以星期天作为这周的第一天)。 // {星期天,星期一,星期二,星期三,星期...

2020-10-14 22:21:10 169

原创 2018省赛JavaA组----分数(填空)

import java.math.BigInteger;import java.util.Scanner;public class TestOne { public static void main(String[] args) { BigInteger two = BigInteger.valueOf(2); BigInteger a = two.pow(20).subtract(BigInteger.ONE);//分子 BigInteger b = two.pow...

2020-10-14 18:19:21 126

原创 2017省赛javaA组----包子凑数(编程)

在这里a表示解集(也就是本文中每种选法的次数)有解:若a0,a1,...,an互质,即它们的最大公约数为1,此时优解无解:a0,a1,...,an不互质即:我们只需计算它们的公约数是否等于1,来判断是否有解下面的数组元素dp[i][j]表示j用前i个数能否凑出如果f(i)可以凑出来,即为true -> 则f(i+每次可加入的数目ai) 也可凑出,即为trueimport java.util.Scanner;public class Test...

2020-10-14 17:15:05 215

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除