牛客网互联网秋招模拟笔试编程题第三题
来源:互联网 发布:js 数组 map方法 编辑:程序博客网 时间:2024/06/05 07:54
上一篇博文中给出了子问题的解决算法。这里给出完整题目和代码。
题目就贴截图好了:
var readline = require('readline');const rl = readline.createInterface({ input: process.stdin, output: process.stdout, terminal:false});var n = -1;// 初始状态为负数,表示还没开始读取var res = 0;rl.on('line', function(line){ // javascript每行数据的回调接口 if (n < 0) { // 测试用例第一行读取n n = parseInt(line.trim()) } else { var tokens = line.split(' ').map(function (x) { return parseInt(x); }); var arr=tokens.sort(sortNumber); //将数列从小到大排序 var hm=arr.slice(n); //获取[n+1,3n]顺序区间内的数列 catalanSort(hm,[],[],0); console.log(res); }});function sortNumber(a,b) { return a-b}function catalanSort(arr,firstLine,secondLine,i){ //firstLine存储各分组的中位数 var n=arr.length/2; if(firstLine.length==n) { //搜索到叶子节点,得到一组符合条件的中位数 res=getSum(firstLine)>res?getSum(firstLine):res; //判断该组中位数之和是否最大 } else { for (var j = 0; j < 2; j++) { if (j == 0) { firstLine.push(arr[i]); } else { secondLine.push(arr[i]); } if (firstLine.length >= secondLine.length) { //约束条件判断 catalanSort(arr,firstLine,secondLine,i+1); //符合条件,扩展搜索空间 } //回溯前,清楚上一步占用的空间状态 if(j==0){ firstLine.pop(); }else{ secondLine.pop(); } } }}function getSum(arr){ //计算数组中所有项之和 return arr.reduce(function(x,y){ return parseInt(x)+parseInt(y); });}
阅读全文
0 0
- 牛客网互联网秋招模拟笔试编程题第三题
- 【牛客网】2017-IT校招全国统一模拟笔试(秋招备战专场) 编程题 --组队竞赛
- 腾讯2016秋招笔试编程题
- 腾讯2017秋招笔试编程题
- 腾讯2017秋招笔试编程题
- 百度2017秋招笔试编程题
- 腾讯2017秋招笔试编程题
- 腾讯2017秋招编程笔试题
- 百度前端秋招笔试编程题
- 腾讯2017秋招笔试编程题
- 百度2017秋招笔试编程题
- 腾讯2017秋招笔试编程题
- 完美世界校招在线笔试题-互联网Java(11月1日)编程题
- 2017校招全国统一模拟笔试第一场-编程题(8题)-牛客网(java)
- 腾讯2016春招模拟笔试题 —— 编程题(3道)
- 2017年爱奇艺校招模拟笔试编程
- 腾讯2017秋招笔试编程题--编码
- 腾讯2017秋招笔试编程题--游戏任务标记
- 计算某日之后,这年所剩余的天数
- Supervisor 安装
- 内存管理
- JavaScript提升日No1
- lnmp简介
- 牛客网互联网秋招模拟笔试编程题第三题
- 栅栏密码--Python解密脚本
- 《鸟哥的linux私房菜:基础学习篇》第3版
- keepalived+lvs
- css3-transform
- Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"(使用forEach时出错)
- vue 自定义组件
- c++第六次作业
- BestCoder Round #84 Bellovin