Java 大学B组 第十届蓝桥杯 2019年国赛真题( 二 )


52574

public class Test {static int cnt;public static void main(String[] args) {dfs(2019, -1);System.out.println(cnt);}static void dfs(int num, int start) {if (num < 0) return;if (num == 0) cnt++;else for (int i = start + 1, high = (int)Math.sqrt(num); i <= high; i++)dfs(num - i * i, i);}}
如果保证拆分出的元素是递增的 , 那么拆分的方法是不会重复的
如果保证拆分出的元素是严格递增的 , 那么拆分的元素和方法都是不会重复的
这个道理在绝大多数情况下都适用
#C 切割
本题总分:10 分
问题描述
在 4 × 4 的方格矩阵中画一条直线 。则直线穿过的方格集合有多少种不同的可能?这个里直线穿过一个方格当且仅当直线将该方格分割成面积都大于 0 的两部分 。
答案提交
这是一道结果填空的题 , 你只需要算出结果后提交即可 。本题的结果为一个整数 , 在提交答案时只填写这个整数 , 填写多余的内容将无法得分 。
不会
#D 最优旅行
本题总分:10 分
问题描述
中国的高铁四通八达 , 乘坐方便 , 小明经常乘坐高铁在城市间旅游 。
现在 , 小明又有了一个长假 , 他打算继续乘坐高铁旅游 。这次 , 他打算到下面的城市旅游 。
上海、广州、长沙、西安、杭州、济南、成都、南京、昆明、郑州、天津、太原、武汉、重庆、南昌、长春、沈阳、贵阳、福州 。
小明打算从北京出发 , 游览以上每个城市正好一次 , 最终回到北京 。在每个城市(除北京外) , 小明都至少停留 24 小时 。而当小明决定从一个城市去往另一个城市时 , 他只会选择有直接高铁连接的城市 , 不会在中途换乘转车 。
在试题目录下有一个文件 trip.txt 保存了小明可以选择的车次 , 小明不会选择其他车次 。
小明出发的时间是第 1 天的中午 12:00 。请问 , 小明游览完以上城市正好一次 , 最终回到北京 , 最快需要多少分钟(请注意单位为分钟 , 请注意除北京外的城市需要至少停留 24 小时 , 即最少停留 1440 分钟) 。
答案提交
这是一道结果填空的题 , 你只需要算出结果后提交即可 。本题的结果为一个整数 , 在提交答案时只填写这个整数 , 填写多余的内容将无法得分 。
40173

import java.io.IOException;import java.io.InputStream;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.InputStreamReader;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.util.*;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Main {static int V, beijing;static boolean[] visit;static List[] graph;static int endDay = 0x3F3F3F3F;static String endTime = "23:59";static Map, Integer> table;public static void main(String[] args) throws IOException {ByteArrayInputStream data = http://www.kingceram.com/post/null;{InputStream resource = new FileInputStream("trip.txt");ByteArrayOutputStream byteOut = new ByteArrayOutputStream();byte[] buff = new byte[8192];int len = 0;while ((len = resource.read(buff)) != -1)byteOut.write(buff, 0, len);data = http://www.kingceram.com/post/new ByteArrayInputStream(byteOut.toByteArray());}BufferedReader in = new BufferedReader(new InputStreamReader(data,"gbk"));Pattern pattern = Pattern.compile("([\u4e00-\u9fa5]+)");table = new HashMap();String line = null;in.readLine();while ((line = in.readLine()) != null) {Matcher matcher = pattern.matcher(line);while (matcher.find()) {String city = matcher.group();if (table.get(city) == null)table.put(city, V++);}}data.reset();in.close();in = new BufferedReader(new InputStreamReader(data, "gbk"));line = in.readLine();graph = new List[V];visit = new boolean[V];for (int i = 0; i