JAVA(HDU)杭电ACM 2955
2016-04-17 14:07
423 查看
动态规划题目
注意概率是相乘而不是相加
注意概率是相乘而不是相加
import java.util.Scanner; public class Main { public static void main(String args[]){ int n,i,j,s; Scanner scan = new Scanner(System.in); n = scan.nextInt(); for(s=0;s<n;s++){ float p = scan.nextFloat(); int bankNumber = scan.nextInt(); //每个银行有点钱 int[] M = new int[bankNumber]; //概率 float[] Pro = new float[bankNumber]; //记录所有银行的总价值 int totalM = 0; //读取数据 for(i=0;i<bankNumber;i++){ M[i] = scan.nextInt(); totalM += M[i]; Pro[i] = scan.nextFloat(); } float[] dp = new float[totalM+1]; dp[0] = 1; for(i = 1;i<=totalM;++i) dp[i] = -1; //dp[j] :在0-i个银行中,抢到money为j时风险的最小值 for(i=0;i<bankNumber;i++){ for(j=totalM;j>=M[i];j--){ dp[j] = max(dp[j],dp[j-M[i]]*(1-Pro[i])); }//endfor }//end for //找到指定概率条件下最大的价值 for(j = totalM;j >= 0 ;j--){ if(dp[j] >= 1-p){ System.out.println(j); break; } }//end for } } private static float max(float i, float j) { return (i>=j?i:j); } }
相关文章推荐
- Java 容器源码分析之HashMap多线程并发问题分析
- 转载:eclipse中各目录的作用
- JAVA练习题
- 逐步回归算法java实现
- Java常见错误
- java中菜单栏的创建
- java 实现二叉树结构的基本运算详细代码
- Java_String
- java基础知识拾遗(三)
- Eclipse使用相关
- 20145208 《Java程序设计》第7周学习总结
- Spring初探----Bean的装配
- JAVA设计模式概述
- 关于struts2 与Ajax整合的版本问题之模型驱动,属性驱动
- Java中Synchronized的用法
- struts2项目插入中文到mysql数据库乱码的解决方法
- Java生成六位验证码(发短信验证)
- java正则表达式之java小爬虫
- 错误解决-----java was started but returned exit code=13
- eclipse安装Spring插件后无法使用maven