华为7.29(代码)
三个题是100,44,85(小弟比较菜大佬勿喷)
第二题是真的没想明白
第三题我猜是无限循环问题我没解决(懒了感觉差不多就行了就没继续搞)
第一题:第一行输入一个数组,第二行输入两个整数i,len。从第i个整数开始输出len个数。如果数组超了,那就只输出到末尾。输出的时候,每二十个需要换行,每个输出用;隔开
第三题:输入多个结构体语句和一个sizeof语句,得到结构体大小。如果某个结构体出现未声明变量,则返回0。这题递归会溢出,需要优化
第二题:一共n个司机,输入四行,每行n个数。第一行输入距离,第二行输入阻塞距离,第三行输入红绿灯个数,第四行输入评分。普通距离速度10m/s,堵塞距离2m/s,红绿灯每个有50%概率等待15s。求得最短时间t的司机m。如果有司机评分高并且耗时t2<t+60,那么选评分高的司机。注意:普通距离要减去堵塞距离
代码不是最终结果,提交的有小改动
//3 import java.util.*; class test{ public static void main(String[] args){ Scanner in = new Scanner(System.in); HashMap<String, String> map = new HashMap<>(); int flag = 0; String name = ""; String member = ""; String s = ""; while(in.hasNext()){ s = in.nextLine(); if (flag == 0){ name = s.substring(7, s.length() - 2); flag = 1; }else if (s.equals("}")){ flag = 0; map.put(name, member); member = ""; }else{ member += s; member += "*"; } } //System.out.println(s.substring(8, s.length() -1)); System.out.println(size(s.substring(8, s.length() -1), map)); } private static int size(String s, HashMap<String, String> map){ String m = map.get(s); //System.out.println(m.substring(0, m.length() - 1)); String[] arr = m.substring(0, m.length() - 1).split("\\*"); int res = 0; for (int i = 0; i < arr.length; i++){ String temp = arr[i]; //System.out.println(temp.substring(4, 8)); if (temp.substring(4, 8).equals("char")){ res += 1; }else if (temp.substring(4, 8).equals("shor")){ res += 2; }else if (temp.substring(4, 8).equals("long")){ res += 4; }else { //System.out.println(temp.split(" ")[1]); //System.out.println(temp.substring(4)); res += size(temp.substring(4).split(" ")[1], map); } } return res; } } ---------------------------------------------------------------------------------------------------------------------- //1 import java.util.*; class test{ public static void main(String[] args){ Scanner in = new Scanner(System.in); while(in.hasNext()){ String s = in.nextLine(); int n = in.nextInt(); int len = in.nextInt(); helper(s, n, Math.min(n + len, s.length())); } } private static void helper(String s, int n, int len){ int k = 0; String res = ""; for (int i = n; i < len; i++){ res += s.charAt(i); res += ";"; k++; if (k == 20){ System.out.println(res); res = ""; k = 0; } } if (!res.equals("")){ System.out.println(res); } } } ------------------------------------------------------------------------------------------------------------- //2 (第二题代码缺的比较多,主要是才44就不补出来了) import java.util.*; class test{ public static void main(String[] args){ Scanner in = new Scanner(System.in); while(in.hasNext()){ String s1 = in.nextLine(); String s2 = in.nextLine(); String s3 = in.nextLine(); String s4 = in.nextLine(); String[] arr1 = s1.split(" "); String[] arr2 = s2.split(" "); String[] arr3 = s3.split(" "); String[] arr4 = s4.split(" "); double[] time = new double[arr1.length]; for (int i = 0; i < time.length; i++){ time[i] = helper(Integer.valueOf(arr1[i]), Integer.valueOf(arr2[i]), Integer.valueOf(arr3[i])); } System.out.println(time[0]); } } private static double helper(int a, int b, int c){ double time = (double)(a - b) / 10 + (double)b / 2 + (double)c * 15 / 2; return time; } }