微众银行Java后端笔试


1.磁铁

//思路:牛客大佬说直接排序就可以了?

>假想一个绝对光滑的,高度很高的盒子,长度为n,宽度为1。在其中,有许多1*1*1的光滑铁块,铁块的每一个角一定位于整数坐标上。由于宽度为1,我们可以用二维字符图来表示每一个铁块的位置。如下图是一个长度为4,其中有7个铁块的二维字符图('x'代表铁块,'o'代表没有铁块):oooo xooo xoxo xxxx每一列的铁块数分别为3,1,2,1由于重力的缘故,所有的铁块要么下面是盒子底面,要么下面是另一个铁块。现在,在盒子的右边增加一个强磁铁。所有右边没有其他铁块或边界的铁块会向右移动,直到撞上一个铁块和边界停下。在上一张二维图上,加入磁铁后的字符图会变为:oooooooxooxxxxxx每一列的铁块数分别为1,1,2,3。可以证明,这样操作后所有铁块要么下面是盒子底面,要么下面是另一个铁块。 现在给你初始每一列有多少个铁块,请你计算,加入磁铁后每一列有多少铁块。输入描述输入第一行包含一个数n,代表盒子的长度 接下来n个数,空格隔开,代表每一列原本有多少个铁块。输出描述输出n个数,空格隔开,代表加入磁铁后每一列有多少个铁块。

在这里插入图片描述

2.节奏小师

//a了百分之九十一

在这里插入图片描述

package 笔试.微众银行;

import java.sql.SQLOutput;
import java.util.Scanner;

public class jiezou {
    
    
    public static void main(String[] args) {
    
    

        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
    
    

            String s=sc.next();
            int l=0;
            int r=s.length();
            long score=0;//记录分数
            int n=1;//记录连续为prefect的次数
            int x=0;//记录miss

            for (int i = 0; i <r ; i++) {
    
    
                if(x>=3){
    
    
                    System.out.println("lose");
                    return;
                }else if(s.charAt(l)=='P'&&n<=3){
    
    
                    score+=200;
                    l++;
                    if(l>0&&s.charAt(l-1)=='P'){
    
    
                        n++;
                    }
                }else if(s.charAt(l)=='P'&&n>=3){
    
    
                    score+=250;
                    l++;
                }else if(s.charAt(l)=='G'){
    
    
                    score+=100;
                    n=1;
                    l++;
                }else{
    
    
                    l++;
                    x++;
                    n=1;
                }
            }
            System.out.println(score);

        }


    }

}

3.数字的重排列

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_38847154/article/details/109105333