攜程第三次筆試 四道題 100% 60% 40% 20%
昨天攜程做了四道題,只AC了一道,大家看看問(wèn)題出在哪
package xiechen; import java.util.*; public class test1 { public static void main(String[] args){ Scanner in = new Scanner(System.in); int row = in.nextInt(); int col = in.nextInt(); List<String> list = new ArrayList<>(); for(int i=0 ; i<row ; ++i){ list.add(in.next()); } int ret=0; for(int i=0 ; i<row-1 ; ++i){ for(int j=0 ; j<col-1 ; ++j){ Set<Character> hashset = new HashSet<>(); char a = list.get(i).charAt(j); char b = list.get(i).charAt(j+1); char c = list.get(i+1).charAt(i+1); char d = list.get(i+1).charAt(j+1); hashset.add(a); hashset.add(b); hashset.add(c); hashset.add(d); if(hashset.contains('y') && hashset.contains('o') && hashset.contains('u')){ ++ret; } } } System.out.println(ret); } }
package xiechen; import java.util.Scanner; public class test2 { public static void main(String[] args){ Scanner in = new Scanner(System.in); int n = in.nextInt(); int[] nums = new int[n]; for(int i=0 ; i<n ; ++i){ nums[i] = in.nextInt(); } for(int i=0 ; i<n ; ++i){ if(nums[i]%2 == 0){ help(nums[i]); }else{ System.out.println(nums[i]/2 +" "+ (nums[i]/2+1)); } } } public static void help(int num){ int x=1, y=num-1; int maxLcm=0; int a=x,b=y; while(x<num/2){ if(maxLcm<lcm(x,y)){ a=x; b=y; } x+=2; y-=2; } System.out.println(a+" "+b); } public static int lcm(int x, int y){ int lcm = x*y; for(int i=2 ; i<=Math.sqrt(x) ; ++i){ if(x%i==0 && y%i==0){ lcm/=i; x/=i; y/=i; } } return lcm; } }
package xiechen; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.List; import java.util.Scanner; class Tree{ int val; List<Tree> children = new ArrayList<>(); int index; Tree(int _val, int _index){ val = _val; index = _index; } } public class test3 { static int ans=0; public static void main(String[] args){ Scanner in = new Scanner(System.in); int n=in.nextInt(); long l=in.nextLong(); long r=in.nextLong(); String binary = in.next(); int[][] edges = new int[n-1][2]; for(int i=0 ; i<n-1 ; ++i){ edges[i][0] = in.nextInt()-1; edges[i][1] = in.nextInt()-1; } List<Tree> ts = new ArrayList<>(); for(int i=0 ; i<n ; ++i){ ts.add(new Tree(Integer.valueOf(binary.charAt(i)+""), i)); } for(int i=0 ; i<n-1 ; ++i){ int x=edges[i][0]; int y=edges[i][1]; ts.get(x).children.add(ts.get(y)); ts.get(y).children.add(ts.get(x)); } boolean[] visit = new boolean[n]; for(int i=0 ; i<n ; ++i){ visit[i] = true; dfs(ts.get(i), String.valueOf(ts.get(i).val), visit, i, l, r); visit[i]=false; } System.out.println(ans); } public static void dfs(Tree ts, String binary, boolean[] visit, int i, long l, long r){ long num = Long.parseLong(binary, 2); if(num>=l && num<=r){ ++ans; } for(int j=0 ; j<ts.children.size() ; ++j){ Tree t = ts.children.get(j); if(visit[t.index]){ continue; } visit[t.index] = true; dfs(t, binary+t.val, visit, t.index, l, r); visit[t.index] = false; } } }
第四題用了中心擴(kuò)散法計(jì)算,超時(shí)了
#23屆找工作求助陣地#