2015百度校招之动态规划(兼职问题)
2015-09-13 01:47
316 查看
晚上做完百度校招笔试题,真心觉得不再爱了,第一题图片没刷出来,第二题一看就有思路,结果花了20多分钟写代码,可竟然半个多小时调试,还做错了,第三题也是很简单。因为前面的网站高并发导致的各种刷不出图问题,很是影响手感。不吐槽了,动态规划问题,只是这里比普通的动态规划多了层包装。第二题截图如下:
交完卷很不爽,明明可以轻松搞定的题,结果还耽误了另外两道题的答题时间,唉,都怪自己太倔。好吧,不吐槽了,下面贴出交卷后完善的代码:
测试:
其实,你说难吗?真不难! 第一次搞动态规划,主要还是自己能画图一步步推导(/article/3665226.html关联文章中的那个图,会画了就okay了!),掌握了,这方法还是很强大的!好吧,笔试又挂了 0.0
交完卷很不爽,明明可以轻松搞定的题,结果还耽误了另外两道题的答题时间,唉,都怪自己太倔。好吧,不吐槽了,下面贴出交卷后完善的代码:
import java.util.Scanner; public class Main1 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan = new Scanner(System.in); String[] num = scan.nextLine().split("\\s");///n,m,K int n = Integer.valueOf(num[0]); int m = Integer.valueOf(num[1]); int k = Integer.valueOf(num[2]); int[] c = new int ; int[] v = new int ; int[] p = new int ; String [] pdata = scan.nextLine().split("\\s"); int temp = n; while(temp>0){ p[temp-1] = Integer.valueOf(pdata[temp-1]); temp--; } ////根据m个时间段重新构造获取的报酬数组 for(int i=0;i<n;i++){ int sum = 0; for(int j=0;j<m&&i>=j;j++){///将i前m个报酬相加 sum+=p[i-j]; } v[i] = sum; c[i] = 1;//消耗体力 } System.out.println(dp(k, m, c, v)); } /** * 动态规划获取单组数据的最大价值 * @param k 体力 * @param m 连续工作间隔 * @param c 工作时间段 * @param v 获得的报酬 * @return */ public static int dp(int k, int m,int[] c, int[] v){ int[][] dp = new int[c.length][k+1];/////dp[i][j]表示在在体力为j时,选择前面i个所得最大报酬 for(int i=0;i<c.length;i++) { dp[i][0] = 0; } for(int j=0;j<k;j++){ dp[0][j] = 0; } for(int i=0;i<c.length;i++){ for(int j=0;j<=k;j++){ if(c[i]>j){///不工作 dp[i][j] = i==0? 0 : dp[i-1][j]; }else{///工作 if(i<m){///前m个时间段 // for(int x=0;x<i+1;x++) dp[i][j] =v[i]; }else{ dp[i][j] = Math.max(dp[i-1][j], dp[i-m][j-1]+v[i]); } } } } if(k<1||c.length<1) return 0; return dp[c.length-1][k]; } }
测试:
其实,你说难吗?真不难! 第一次搞动态规划,主要还是自己能画图一步步推导(/article/3665226.html关联文章中的那个图,会画了就okay了!),掌握了,这方法还是很强大的!好吧,笔试又挂了 0.0
相关文章推荐
- POJ - 1962 Corporative Network(带权并查集)
- 基于 Android蓝牙4.0开发详细讲解,与硬件通信 史上最牛逼,最详细
- 活体检测
- Caused by: java.lang.ClassNotFoundException: javassist.util.proxy.MethodFilter
- 线性时间字符串转移
- [PHP学习教程 - 类库]001.全局唯一ID(GUID)
- LeetCode Word Break II
- LeetCode Word Break II
- composer更新不成功,启用国内镜像网站的配置更改办法
- JAVA学习基础篇第一周
- Leetcode Perfect Squares
- Spring与ehcache整合,通过Spring原生注解使用缓存
- UVALive 5902 Movie collection(树状数组)
- 服务器环境配置nginx / php / php-fpm(一)
- Android应用进程间通信之Messenger信使使用及源码浅析
- book publisher and study
- Xcode7免证书真机调试
- linux centos 下php的mcrypt扩展
- jQuery part1
- securecrt同时向多个tab窗口发送相同的命令