携程第三次笔试 四道题 100% 60% 40% 20%
昨天携程做了四道题,只AC了一道,大家看看问题出在哪
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;
}
}
}
第四题用了中心扩散法计算,超时了
#23届找工作求助阵地#
文远知行公司福利 495人发布