标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。