京东2016招聘 数据开发、数据研究、算法 岗位

6人阅读 评论(1) 收藏 举报
分类:

这里写图片描述

思路:动态背包问题

import java.util.*;
class Sugar{
    int cat;
    int x;
    Sugar(int cat,int x,int index){
        this.cat=cat;
        this.x=x;
    }
}
public class Main{
    public  static void main(String[] args){
        Scanner s=new Scanner(System.in);
        while(s.hasNext()){
            int num=s.nextInt();
            int contains=s.nextInt();
            Sugar[] sugars=new Sugar[num+1];
            for(int i=1;i<=num;i++){
                sugars[i]=new Sugar(s.nextInt(),s.nextInt(), i);
            }
            //能装下所有的情况
            if(2*num<=contains){
                    long cv=0;
                    for(int i=1;i<=num;i++){                
                        cv+=sugars[i].x;
                    }
                    System.out.println(cv);
                    for(int i=1;i<=num;i++)
                        System.out.println(i+" ");
            }else{
            //不能装下所有的情况
                int[][] m=new int[num+1][contains+1];
                //存放物品1-i集合中 背包大小为J时 可以放下的最高价值
                int[]path=new int[num+1];           
                for(int i=1;i<=num;i++){
                    m[i][0]=0;
                    for(int j=1;j<=contains;j++){
                        if((i==1)&&(j>=sugars[1].cat)){
                            m[i][j]=sugars[1].x;
                        }
                        if(i>1){
                            if(j>=sugars[i].cat){
                                m[i][j]=Math.max(m[i-1][j],m[i-1][j-sugars[i].cat]+sugars[i].x);                        
                            }else{
                                m[i][j]=m[i-1][j];
                            }

                        }
                    }
                }
                int j=contains;
                //根据矩阵找到路径
                for(int i=num;i>=1;i--){
                    if(m[i][j]==m[i-1][j] ){
                        path[i]=0;
                    }else{
                        path[i]=1;
                        j=j-sugars[i].cat;

                    }
                }   
                System.out.println(m[num][contains]);
                if(m[num][contains]==0){
                    System.out.println("No");
                }else{
                    for(int i=1;i<=num;i++){
                        if(path[i]==1){
                            System.out.print(i+" ");
                        }
                    }
                    System.out.println();
                }

            }
        }
    }
}
查看评论

2018京东校招笔试题-数据分析岗

题目大意是给出一个数字n,问a^b=c^d(1 首先分析题目,n的数据范围肯定是不能暴力的,从其他同学的反馈也表示这题暴力只能过20% 此题的规律在于,以一个较小的数字a当基底 将 a^p 和 a...
  • q295657451
  • q295657451
  • 2017-09-10 14:44:02
  • 1768

京东2016实习生招聘 C++开发工程师 在线考试(编程题第二题:选举游戏)

京东2016实习生招聘 C++开发工程师在线考试 编程题30分2/2 选举游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 6...
  • ouyangjinbin
  • ouyangjinbin
  • 2016-04-08 20:27:51
  • 859

京东2016实习生招聘笔试详解

【单选】 若一进程有10个线程,则在系统调度执行时间上占用的时间片是() 1 0 42014 10 【正确答案】:A  【解析】:本题主要考查关于进程和线程之间资源共享的知识点。...
  • samjustin1
  • samjustin1
  • 2016-08-04 22:48:30
  • 1070

从招聘网站分析大数据相关职位现状

近几年大数据行业席卷整个社会的各行各业,火热到跟当年的Android开发一样,未来5年将新一步火爆,很多从事IT行业的人员开始投入到大数据行业中,那么,目前大数据职位需求现状如何,对从业者的要求如何,...
  • levy_cui
  • levy_cui
  • 2016-07-27 11:17:31
  • 2493

京东2016年算法工程师笔试题

1、 若k为整形,下述while循环的次数为:() k=1000; while (k>1)  {   print k;       k=k/2;  } 选项: A:10...
  • wuxiaosi808
  • wuxiaosi808
  • 2017-08-13 19:32:54
  • 3186

京东2017校园招聘数据与算法方向笔试题

昨天做了一下京东的在线笔试。京东这次笔试题分为三个部分,第一部分是选择题30道,第二部分是2道编程题,第三部分是5道实用性更强的选择题。这里仅贴出题目,不提供答案。 一、选择题 1、设循环队列...
  • JIEJINQUANIL
  • JIEJINQUANIL
  • 2016-09-06 17:57:02
  • 6517

2017京东春招实习生招聘编程题

题目描述: 有一条很长的队伍,队伍里面一共有n个人。所有的人分为三类:警察,小偷和普通人。 将队伍里面的人从前到后由1到n编号,编号为i的人与编号为j的人的距离为i与j之差的绝对值。 每一个警察有一个...
  • u013172314
  • u013172314
  • 2018-03-17 20:31:12
  • 127

京东2016面经(算法春招实习)

经历一轮轮过关斩将也是成功的过了HR面,上面的状态不知道是不是等待拿offer,不出意外应该是没问题了吧,下面聊聊面试过程。 一面 一面技术面在一个五星级酒店宴会厅进行的,由于跟腾讯冲突时间导致到场的...
  • chixujohnny
  • chixujohnny
  • 2016-04-20 15:04:57
  • 4997

京东2017校招算法题

转自Jing0 's blog 岗位:Java 开发笔试时间:09/05/2016 第一题 购物清单 题目大意是这样的:有多组数据,每组开始给出 n 和 m (m, n ≤ 10...
  • fleapo
  • fleapo
  • 2016-09-14 15:31:19
  • 404

京东2017实习生招聘在线笔试编程题

总结:差点忘了京东今天也有笔试了,刚开始1h20min1h20min在做华为的题,很简单,但是考虑的情况很多(实际很多数据中都没有),第三道模拟题想的比较复杂,做了40min40min,一次ACAC。...
  • idealism_xxm
  • idealism_xxm
  • 2017-04-07 22:19:35
  • 1655
    个人资料
    等级:
    访问量: 8017
    积分: 403
    排名: 12万+