首页 > 5.13携程笔试
头像
万古成空
编辑于 2021-05-13 21:01
+ 关注

5.13携程笔试 投票

吐血了,第一题全排列不会写,然后最后20分钟写出来了,但是没有DEBUG,交完卷子发现是因为自己用了HashSet线程不安全报错了,然后在结束前10分钟把HashSet改成CopyOnWriteArraySet,全排列成功了。交早了,后悔;
我好渣,第一题ac14%,第二题ac83%;又一次笔试挂了。


import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.concurrent.CopyOnWriteArraySet;
import java.util.regex.*;

public class Main {


/*请完成下面这个函数,实现题目要求的功能
当然,你也可以不按照下面这个模板来作答,完全按照自己的想法来 ^-^   通过14%
******************************开始写代码******************************/
    static int procee(int[] scores, int[] cards) {
        //开始用了不安全的数据结构HashSet,交早了。交完,距结算前10分钟做出来了
        Set<int[]> set=new CopyOnWriteArraySet<>();
        set.add(cards);
        for(int i=0;i<cards.length-1;i++){
            for(int[] a:set){
                int[] tmp=a.clone();
                int mid=tmp[i];
                tmp[i]=tmp[i+1];
                tmp[i+1]=mid;
                set.add(tmp);
            }
        }
        
        int sum=0;
        for(int[] a:set){
            int sum1=scores[0];
            int pre=0;
            for(int i:a){
               if(pre+i<scores.length) {
                   sum1+=scores[pre+i];
                   pre+=i;
               }else {
                   break;
               }
            }
            sum=Math.max(sum,sum1);
        }
        return sum;
    }
/******************************结束写代码******************************/


    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int res;

        int _scores_size = 0;
        _scores_size = Integer.parseInt(in.nextLine().trim());
        int[] _scores = new int[_scores_size];
        int _scores_item;
        for(int _scores_i = 0; _scores_i < _scores_size; _scores_i++) {
            _scores_item = Integer.parseInt(in.nextLine().trim());
            _scores[_scores_i] = _scores_item;
        }

        int _cards_size = 0;
        _cards_size = Integer.parseInt(in.nextLine().trim());
        int[] _cards = new int[_cards_size];
        int _cards_item;
        for(int _cards_i = 0; _cards_i < _cards_size; _cards_i++) {
            _cards_item = Integer.parseInt(in.nextLine().trim());
            _cards[_cards_i] = _cards_item;
        }

        res = procee(_scores, _cards);
        System.out.println(String.valueOf(res));

    }
}
import java.util.Scanner;

/**
 * Created by lwf on 2021/5/13 19:04
 * AC 83不行了
 */
public class Main2 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int N=sc.nextInt();
        int[] X=new int[N];
        int[] Y=new int[N];
        int[] Z=new int[N];
        for(int j=0;j<N;j++){
                X[j]=sc.nextInt();
            }
        for(int j=0;j<N;j++){
            Y[j]=sc.nextInt();
        }
        for(int j=0;j<N;j++){
            Z[j]=sc.nextInt();
        }
        int start=0;
        int sum=0;
        for(int n=0;n<N;n++) {
            start=n;
            while (start < N) {
                for (int i = 1; i <= N - start; i++) {
                    int sum1 = Z[start];
                    int pre = start;
                    for (int i1 = start + i; i1 < N; i1++) {
                        if (Y[pre] <= X[i1]) {
                            sum1 += Z[i1];
                            pre = i1;
                        }
                    }
                    sum = Math.max(sum, sum1);
                }
                start++;
            }
        }
        System.out.println(sum);
        sc.close();
    }
}



全部评论

(7) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

热门推荐