ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

携程笔试1-排列问题

2021-05-13 22:34:48  阅读:132  来源: 互联网

标签:deque 排列 LinkedList 携程 int 笔试 cIndex new public


 

 

 

public class XieCheng2 {
    /**
     * 给定 n个岛屿的分数:  x1 x2.. xn
     * m张牌:  y1 y2.. ym
     * 每次前进 y1
     * 问最高分数
     */
    public static void main(String[] args) {
        int n=4, m=2;
        int[] scores = new int[]{1,2,3,4};

        int[] cards = new int[]{1,2};
        int maxScores=0;
        LinkedList<ArrayList<Integer>> allCards = getAll(cards);

        for (ArrayList<Integer> allCard : allCards) {
            int cIndex=0;
            int cScore=scores[0];
            for (int i = 0; i < allCard.size(); i++) {
                Integer cardNum = allCard.get(i);
                cIndex += cardNum;
                if(cIndex>n-1){
                    break;
                }
                cScore+=scores[cIndex];

            }
            maxScores = Math.max(cScore,maxScores);
        }
        System.out.println(maxScores);
    }
    public static LinkedList<ArrayList<Integer>> list = new LinkedList<>();
    public static LinkedList<ArrayList<Integer>> getAll(int[] a){
        boolean[] used = new boolean[a.length];
        Deque<Integer> deque = new ArrayDeque<>();

        for(int i=0; i<a.length; i++){
            deque.addLast(a[i]);
            used[i] = true;
            dfs(a.length,a,used,deque);
            used[i] = false;
            deque.removeLast();
        }
        return list;
    }

    private static void dfs(int n, int[] a, boolean[] used, Deque<Integer> deque) {
        if(deque.size() == n){
            list.add(new ArrayList<>(deque));
            return;
        }
        for(int i=0; i<a.length; i++){
            if(!used[i]){
                deque.addLast(a[i]);
                used[i] = true;
                dfs(a.length,a,used,deque);
                used[i] = false;
                deque.removeLast();
            }
        }
    }
}

 

标签:deque,排列,LinkedList,携程,int,笔试,cIndex,new,public
来源: https://www.cnblogs.com/wsZzz1997/p/14766470.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有