网易8.8Java笔试

//第一题
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int n = sc.nextInt();
            long[] arr = new long[n];
            for (int i = 0; i < n; i++) {
                arr[i] = sc.nextLong();
            }
            System.out.println(solve(arr));
        }
    }

    private static long solve(long[] arr) {
        long count = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == 1){
                count +=0;
            }else if(arr[i] == 2 || arr[i] == 3){
                count++;
            }else if (arr[i] % 2 == 0 && arr[i] !=2){
                count+=arr[i] / 2;
            }else if(arr[i] % 2 ==1 && arr[i] != 3){
                count+=arr[i] / 2;
            }
        }
        return count;
    }
}
//第三题
import java.util.Scanner;

public class Main03 {

    public static void main(String[] args) {
        new Main03_2().start();
    }
    private int result;
    private void start(){
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        while(T-- > 0){
            //当前轮的结果
            result = Integer.MAX_VALUE;
            //n个礼物
            int n = sc.nextInt();
            int[] arr = new int[n];
            for (int i = 0; i < n; i++) {
                arr[i] = sc.nextInt();
            }
            int[] state = new int[n];
            //对于一个礼物有3种状态 要么分给A -1 要么给B -2 要么就不分 -3
            dfs(0,state,arr);
            System.out.println(result);
        }
    }
    private void dfs(int index,int state[],int[] arr){
        //分配完了 开始判断
        if(index == state.length){
            //如果A和B价值相等就直接更新丢弃值
            int valOfA = 0,valOfB = 0,valOfOut = 0;
            for(int i = 0;i < state.length;i++){
                if(state[i] == 1){
                    valOfA += arr[i];
                }else if(state[i] == 2){
                    valOfB += arr[i];
                }else if(state[i] == 3){
                    valOfOut += arr[i];
                }
            }
            //统计完毕
            if(valOfA == valOfB)result = Math.min(result,valOfOut);
            return;
        }
        //开始分配
        state[index] = 1;
        dfs(index + 1,state,arr);
        state[index] = 2;
        dfs(index + 1,state,arr);
        state[index] = 3;
        dfs(index + 1,state,arr);
    }

}


#网易##笔试题目#
全部评论

相关推荐

07-25 10:53
门头沟学院 Java
投递简历一星期多了,一直卡在第一个环节没进展是不是已经没戏了
Peter____G...:其他大厂都过了,甚至在字节实习了,但是莉莉丝简历依旧秒挂
投递莉莉丝游戏等公司7个岗位
点赞 评论 收藏
分享
不多说了,看图吧
MomonKa:实际上是,机房机器有些高度,问问你身高,有没有女朋友是看你能不能猛猛加班
你最讨厌面试问你什么?
点赞 评论 收藏
分享
程序员牛肉:不用想,肯定是被卡学历了。 简历其实没什么大问题,就中规中矩的及格简历。但问题就在于有太多学历比你好的人了。所以即使你们的能力一样,人家也更加倾向于约面学历更好的。
实习,投递多份简历没人回...
点赞 评论 收藏
分享
今天 14:10
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务