字节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;
                }
        }
    }

#笔试题目##字节跳动#
全部评论

相关推荐

评论
1
2
分享

创作者周榜

更多
牛客网
牛客企业服务