疯狂游戏8月30日笔试

第一题:岛屿数量
package Test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;

class node{
    int x;
    int y;
    public node(int x,int y){
        this.x=x;
        this.y=y;
    }
}
public class 岛屿数量 {
    public static void main(String[] args) throws IOException {
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        String[] str=br.readLine().split(",");
        int[][] map=new int[str.length][str[0].length()];
        for(int i=0;i<str.length;i++){
            for(int j=0;j<str[i].length();j++){
                map[i][j]=str[i].charAt(j)-'0';
            }
        }
        int[][] vis=new int[str.length][str[0].length()];
        int m=vis.length,n=vis[0].length,flag=0;
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(map[i][j]==1&&vis[i][j]==0){
                    bfs(map,vis,m,n,i,j);
                    flag++;
                }
            }
        }
        System.out.println(flag);
    }
    public static void bfs(int[][] map,int[][] vis,int m,int n,int x,int y){
        LinkedList<node>q=new LinkedList<>();
        q.offer(new node(x,y));
        while(!q.isEmpty()){
            node temp=q.pop();
            if(temp.x+1<m&&map[temp.x+1][temp.y]==1&&vis[temp.x+1][temp.y]==0){
                vis[temp.x+1][temp.y]=1;
                q.offer(new node(temp.x+1,temp.y));
            }
            if(temp.y+1<n&&map[temp.x][temp.y+1]==1&&vis[temp.x][temp.y+1]==0){
                vis[temp.x][temp.y+1]=1;
                q.offer(new node(temp.x,temp.y+1));
            }
        }
    }
}
第二题:戳气球
package Test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class 戳气球 {
    private static int maxn=0;
    public static void main(String[] args) throws IOException {
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        String[] str=br.readLine().split(",");
        List<Integer>list=new ArrayList<>();
        for(int i=0;i<str.length;i++){
            list.add(Integer.parseInt(str[i]));
        }
        dfs(list,0);
        System.out.println(maxn);
    }
    public static void dfs(List<Integer>list,int flag){
        if(list.size()==0){
            maxn=Math.max(maxn,flag);
            return;
        }
        if(list.size()==1){
            List<Integer>temp=new ArrayList<>(list);
            temp.remove(0);
            dfs(temp,flag+list.get(0));
        }
        else if(list.size()==2){
            List<Integer>temp=new ArrayList<>(list);
            if(list.get(0)<list.get(1)){
                temp.remove(0);
                dfs(temp,flag+list.get(0)*list.get(1));
            }
            else{
                temp.remove(1);
                dfs(temp,flag+list.get(0)*list.get(1));
            }
        }
        else{
            for(int i=1;i<list.size()-1;i++){
                List<Integer>temp=new ArrayList<>(list);
                temp.remove(i);
                dfs(temp,flag+list.get(i)*list.get(i-1)*list.get(i+1));
            }
        }
    }
}


#笔试题目#
全部评论
这个第二题,else判断中,不应该优先搓破1到n-1中最小的那个吗?
点赞
送花
回复 分享
发布于 2020-08-30 10:48
还没结束考试,哥们。。。。
点赞
送花
回复 分享
发布于 2020-08-30 10:52
秋招专场
校招火热招聘中
官网直投
两道全AC也不知道能不能过笔试,感觉肯定很多人都全AC😅
点赞
送花
回复 分享
发布于 2020-08-30 10:58
都是力扣原题
点赞
送花
回复 分享
发布于 2020-08-30 11:01
我心态炸了,我不会处理带逗号的输入输出,两道题都写出来了,但是没用,数据读不进去🤐不想活了
点赞
送花
回复 分享
发布于 2020-08-30 11:09

相关推荐

点赞 3 评论
分享
牛客网
牛客企业服务