#华为机试# 5.11华为机试

#华为机试#
5.11华为机试:
1、第一行输入一个数N(1<=N<=10000)表示数组有n个元素,第二行输入为数组的元素,数组中所有值不同。输出每个数比右边大的个数。
样例输入:
4
7 2 8  9
样例输出:
1 0 0 0
样例输入:
5
7 5 9 4 3
样例输出:
3 2 2 1 0
解答:leetcode有原题(困难)......
2、找出围棋中黑子与白子的活子数。所谓活子数,就是有大于2个气的棋子。一个棋子在棋盘上,与它直线紧邻的空点是这个棋子的“气”。直线紧邻的点上如果有同色棋子存在,这些棋子就相互连接成一个不可分割的整体。直线紧邻的点上如果有异色棋子存在,此处的气便不存在。棋子如失去所有的气,就不能在棋盘上存在。
输入说明:输入只有一行,第一个字符输入的棋盘大小,后续按行列输入棋子情况,其中W为白子,B为黑子,N为空。
样例输入:
3WWWNBBBNN
样例输出:
B 3 W 0
说明:
棋盘为
W W W
N  B   B
B  N  N
因此 W白色棋子没有活子(所有子的气为1)黑色棋子有三个活子(每个棋子都有大于等于两个气)。
思路:暴力搜索代码-BFS
二重循环遍历矩阵,使棋子在同色范围内扩张,遇到同色就加入队列,遇到异色不做处理,遇到空位则气+1,气>=2即可判定矩阵的该位置上的棋子为活子。
import java.util.*;
public class HJ511 {
    static class Point{
        int x;
        int y;
         Point(int x,int y){this.x = x;this.y = y;}
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        int n = str.charAt(0)-'0';
        char[][] chs = new char[n][n];
        int index = 1;
        for(int i=0;i<n;++i){
            for(int j=0;j<n;++j){
                chs[i][j] = str.charAt(index++);
            }
        }
        int w=0;
        int b = 0;
        for(int i=0;i<n;++i){
            for(int j=0;j<n;++j){
                if(bfs(i,j,chs,new boolean[n][n])){
                    switch (chs[i][j]){
                        case 'W':w++;break;
                        case 'B':b++;break;
                    }
                }
            }
        }
        System.out.println("B "+b+" W "+w);
    }
    public static boolean bfs(int i,int j,char[][]chs,boolean visit[][]){
        Queue<Point> que = new LinkedList<>();
        int count = 0;
        char c = chs[i][j];
        que.offer(new Point(i,j));
        while(que.size()!=0){
            Point p = que.poll();
            if(p.x+1<chs.length&&chs[p.x+1][p.y]==c&&!visit[p.x+1][p.y]){
                que.offer(new Point(p.x+1,p.y));
                visit[p.x+1][p.y] = true;
            }
            if(p.x-1>=0&&chs[p.x-1][p.y]==c&&!visit[p.x-1][p.y]){
                que.offer(new Point(p.x-1,p.y));
                visit[p.x-1][p.y] = true;
            }
            if(p.y+1<chs[0].length&&chs[p.x][p.y+1]==c&&!visit[p.x][p.y+1]){
                que.offer(new Point(p.x,p.y+1));
                visit[p.x][p.y+1] = true;
            }
            if(p.y-1>=0&&chs[p.x][p.y-1]==c&&!visit[p.x][p.y-1]){
                que.offer(new Point(p.x,p.y-1));
                visit[p.x][p.y-1] = true;
            }
            if(p.x+1<chs.length&&chs[p.x+1][p.y]=='N'&&!visit[p.x+1][p.y]){
                visit[p.x+1][p.y]= true;
                count++;
            }
            if(p.x-1>=0&&chs[p.x-1][p.y]=='N'&&!visit[p.x-1][p.y]){
                visit[p.x-1][p.y] = true;
                count++;
            }
            if(p.y+1<chs[0].length&&chs[p.x][p.y+1]=='N'&&!visit[p.x][p.y+1]){
               visit[p.x][p.y+1] = true;
                count++;
            }
            if(p.y-1>=0&&chs[p.x][p.y-1]=='N'&&!visit[p.x][p.y-1]){
                visit[p.x][p.y-1] = true;
                count++;
            }
            if(count >=2)return true;
        }
        return false;
    }
}


3.设备连线:输入两个整数n k,n代表有n个设备需要连接成一个圆环,k代表这n个设备需要从0到(2^k) - 1中取出(可以取同种类的设备)。设备连接时,相邻设备号的二进制数如果满足了同或为1会发生爆炸。求这n个设备连成圆环不发生爆炸的种数。(这道题没做,有无大佬分享思路?)
#华为机试##春招##实习##笔试题目##面经##华为##笔经##Java#
全部评论
第二题,输入是 N*N吗
1
送花
回复 分享
发布于 2022-05-12 11:27
第三题,如果没有环的话,比较好解,是一个数学问题,有环就难说了 dfs过5%
1
送花
回复 分享
发布于 2022-05-12 12:22
国泰君安
校招火热招聘中
官网直投
第二题bfs: 1.先找到所有气 >=2的黑白棋活子坐标  2. 以活子坐标展开BFS,记录相邻棋子的位置  3. 统计2中所有活棋子的所有数目即可。  注意:维护一个visit数组保存各棋子访问记录,黑白棋子分开计算。
3
送花
回复 分享
发布于 2022-09-22 11:21 广东
第一题就是求最长递增子序列这道题吧,只是要倒序枚举。不知道会不会超时?
1
送花
回复 分享
发布于 2022-09-22 09:57 广东
第三题没看懂,从n个设备中取出啥?什么叫同种类的设备,题目也没告诉我不同种类的设备意味着啥子嘞,输入输出可以看看吗🤣
点赞
送花
回复 分享
发布于 2022-05-12 08:56
leetcode有题号吗,第一题
点赞
送花
回复 分享
发布于 2022-05-12 11:23
能用编译器吗
点赞
送花
回复 分享
发布于 2022-05-12 13:26
学到了   第二题真的够暴力。    机试真的难哭😖
点赞
送花
回复 分享
发布于 2022-05-12 16:03
多少分能进面啊
点赞
送花
回复 分享
发布于 2022-05-12 16:25
我考的没那么难诶
点赞
送花
回复 分享
发布于 2022-05-12 17:57
机试通过收到短信了吗
点赞
送花
回复 分享
发布于 2022-05-12 18:07
华子今年的笔试是真的变难了
点赞
送花
回复 分享
发布于 2022-05-12 21:05
前两题比较简单第三题区难度还可以,不过华子考的这没想到
点赞
送花
回复 分享
发布于 2022-05-19 00:32
感觉第一题暴力应该能过,力扣困难那题最大长度是10万,这题最大长度是1万
点赞
送花
回复 分享
发布于 2022-05-27 20:58
请问一下哦,正式机考的时候可以用自己的IDE进行调试吗,或者他们提供的线上编译系统支持单步调试功能吗?没有的话我可能查错要查半天😂😅
点赞
送花
回复 分享
发布于 2022-06-15 09:43
这个应该对吧,就是暴击所有情况了
点赞
送花
回复 分享
发布于 2022-07-02 14:45

相关推荐

小米汽车 BMS 软件 18k*15
点赞 评论 收藏
分享
16 73 评论
分享
牛客网
牛客企业服务