字节A了前3道,最后一道超时
public void exam1(){ Scanner in = new Scanner(System.in); while(in.hasNext()){ int n =in.nextInt(); int[][] rel = new int[n][n]; for(int i=0;i<n;i++) for (int j=0;j<n;j++) rel[i][j]=in.nextInt(); Set<Integer> all = new HashSet<>(); Set<Integer> tmp = new HashSet<>(); Queue<Integer> q = new ArrayDeque<>(); int ans=0; for(int i=0;i<n;i++){ if(all.contains(i)) continue; tmp.add(i); for(int j=i+1;j<n;j++){ if(rel[i][j]>=3&&!all.contains(j)){ tmp.add(j); all.add(j); q.add(j); } } while (!q.isEmpty()){ int k = q.poll(); for(int j=k+1;j<n;j++){ if(rel[k][j]>=3&&!all.contains(j)){ tmp.add(j); q.add(j); all.add(j); } } } ans++; tmp.clear(); } System.out.println(ans); } } public void exam2(){ Scanner in = new Scanner(System.in); while(in.hasNext()){ int n = in.nextInt(); if(n==2){ System.out.println(1); continue; } int tmp = n/2; long[] ans =new long[tmp+1]; ans[0]=1; ans[1]=1; ans[2]=2; for(int i=3;i<tmp+1;i++){ for(int j=0;j<i;j++){ ans[i]+=ans[j]*ans[i-j-1]; if(ans[i]>1000000007) ans[i]=ans[i]%1000000007; } } System.out.println(ans[tmp]); } } public void exam3(){ Scanner in = new Scanner(System.in); while(in.hasNext()){ int direct = in.nextInt(); int[][] array = new int[4][4]; for(int i=0;i<4;i++) for(int j=0;j<4;j++) array[i][j]=in.nextInt(); rotate(array,direct); for(int i=0;i<4;i++){ int loc =0; int val =0; for(int j=0;j<4;j++){ if(array[j][i]==0) continue; if(val ==0){ val=array[j][i]; continue; } if(val ==array[j][i]){ array[loc][i]=2*val; loc++; val=0; continue; } array[loc][i]=val; loc++; val=array[j][i]; } if(val!=0){ array[loc][i]=val; loc++; } while (loc<4){ array[loc][i]=0; loc++; } } if(direct==3) direct=4; else if(direct==4) direct=3; rotate(array,direct); for(int i=0;i<4;i++){ for(int j=0;j<4;j++) System.out.print(array[i][j]+" "); System.out.println(); } } } public void rotate(int[][] array,int direct){ if (direct==1) return; if (direct==2){ int tmp; for(int i=0;i<4;i++) for(int j=0;j<2;j++){ tmp=array[j][i]; array[j][i]=array[3-j][i]; array[3-j][i]=tmp; } return; } if (direct==3){ int tmp; for(int i=0;i<2;i++) for(int j=0;j<2;j++){ tmp = array[i][j]; array[i][j]=array[3-j][i]; array[3-j][i]=array[3-i][3-j]; array[3-i][3-j]=array[j][3-i]; array[j][3-i]=tmp; } } if (direct==4){ int tmp; for(int i=0;i<2;i++) for(int j=0;j<2;j++){ tmp = array[i][j]; array[i][j]=array[j][3-i]; array[j][3-i]=array[3-i][3-j]; array[3-i][3-j]=array[3-j][i]; array[3-j][i]=tmp; } } }
#笔试题目##字节跳动#