[lua]笔试-组合概率
--[[
组合概率
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Problem Description:
某生产零件的工厂为方便管理场内生产的零件种类,现将他们生产的零件从低等到高等零件排序,序号分别为1,2..n,已知该厂的任意几个低等的零件可以组合成更高等的零件,零件的序号代表了零件的等级,比如5号零件可以由1号和4号零件组合而成,也可以有2号和3号零件组合而成。
现有一个序号为 x 的零件,它是由n个序号在[a,b]区间内的零件组合而成,求n个序号在[a,b]区间内的零件组合为 x 零件的概率
一行输入四个整数依次为n,a,b,x,用空格分隔。数据规模和约定
对于50%的数据,n≤5.
对于100%的数据,n≤100,b≤100
输出一行为组合为 x 零件的概率,小数点后保留四位小数
--]]
local M = 101
local N = 101
local a = 0
local b = 0
local function init()
local F = {}
for i=1,M do
F[i-1] = {}
for j=1,N do
F[i-1][j-1] = 0
end
end
return F
end
function P(F, n, X)
if F[n][X] == nil then
return 0
end
if n == 0 and X == 0 then
F[0][0] = 1
return 1
end
if n == 0 and X ~= 0 then
F[0][X] = 0
return 0
end
for k=a,b do
if X>=a then
F[n][X] = F[n][X] + P(F, n-1, X - k)
end
end
F[n][X] = F[n][X] / (b-a+1)
return F[n][X]
end
function run(n,x,ta,tb)
local F = init()
a = ta
b = tb
local v = P(F, n, x)
local l = string.format("%.4f", v)
print(l)
end
run(1, 4, 1,5) -- expected: 1/5 = 0.2000
run(2, 10, 1, 9) -- expected: 4/36 = 1/9 = 0.1111
run(4, 23, 1, 20) -- expected: 0.0106
[lua]笔试-组合概率的更多相关文章
- [lua]笔试-按字典序列出指指定的序列的位置
计算方法: n的阶乘记为f(n), s为输入序列, sub(i)为s的i到n的子序列.A(i)为第i位对应的字母在子序列sub(i)中的字典顺序 N(s) = sum_{1,n} T(i)*(A(i) ...
- unity,C#,游戏面试笔试真题
最开始的两家公司笔试面试题目 一家公司是学校聘请研究教育方面VR课件的公司,面试没几天,就收到了面试通过的消息,后面因为通过了另一家游戏公司而拒绝了. 另一家公司是一家游戏外企,在春熙路,当时笔试还可 ...
- lua执行字节码的过程介绍
前面一篇文章中介绍了lua给下面代码生成最终的字节码的整个过程,这次我们来看看lua vm执行这些字节码的过程. foo = "bar" local a, b = "a& ...
- lua 学习笔记(1)
一.lua函数赋值与函数调用 在lua中函数名也是作为一种变量出现的,即函数和所有其他值一样都是匿名的,当要使用某个函数时,需要将该函数赋值给一个变量,这样在函数块的其他地方就可以通过 ...
- C++常见笔试面试要点以及常见问题
1. C++常见笔试面试要点: C++语言相关: (1) 虚函数(多态)的内部实现 (2) 智能指针用过哪些?shared_ptr和unique_ptr用的时候需要注意什么?shared_ptr的实现 ...
- 在redis中使用lua脚本让你的灵活性提高5个逼格
在redis的官网上洋洋洒洒的大概提供了200多个命令,貌似看起来很多,但是这些都是别人预先给你定义好的,但你却不能按照自己的意图进行定制, 所以是不是感觉自己还是有一种被束缚的感觉,有这个感觉就对了 ...
- 使用Nginx+Lua代理Hadoop HA
一.Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个Master组件提供服务,其中正在使用的组件称为Active,另一个作为备份称为Standby,例如HDFS的NameNo ...
- 打印Lua的Table对象
小伙伴们再也不用为打印lua的Table对象而苦恼了, 本人曾也苦恼过,哈哈 不过今天刚完成了这个东西, 以前在网上搜过打印table的脚本,但是都感觉很不理想,于是,自己造轮子了~ 打印的效果,自己 ...
- lua解析赋值类型代码的过程
我们来看看lua vm在解析下面源码并生成bytecode时的整个过程: foo = "bar" local a, b = "a", "b" ...
随机推荐
- JAVA訪问URL
JAVA訪问URL: package Test; import java.io.BufferedReader; import java.io.IOException; import java.io.I ...
- JavaScript 实现Map
var map=new Map(); map.put("a","A");map.put("b","B");map.put ...
- 2013杭州网络赛D题HDU 4741(计算几何 解三元一次方程组)
Save Labman No.004 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- .Net Web开发中实现剪切板功能
我要实现的功能是:在列表页,通过一个按钮复制对应的文章Url,如下图: 如下代码: <a class="btn btn-success copy" href=&quo ...
- C++知识点整理——持续更新
virtual是C++的一个关键字,virtual修饰的函数可以被子类重写. 用法:在返回值类型的前面添加关键字即可. override是C++的保留字(注意不是关键字),表示当前函数重写了基类的 ...
- 如何交叉编译开源库-->编译c-ares库从失败到成功的过程[ocean]
编译c-ares库从失败到成功的过程c-ares-master: apt-get install libtool ####https://github.com/c-ares/c-ares ==== ...
- PGA_AGGREGATE_TARGET 原理
PGA_AGGREGATE_TARGET参数的理解 PGA结构图: 在Oracle9i之前,PGA的计算和控制都是比较复杂的事情,从 ...
- lambda, reduce, map求阶乘之和
学完这几个优雅的内建函数,就可以做一些有趣的小练习来激发兴趣了.而python最大的好处便是简洁,看下边要求 用1行代码求 1! + 2! + 3! + ... + 10! 求阶乘 reduce函数用 ...
- 导入jsp
<%@ page contentType="text/html;charset=UTF-8" %><%@ page isELIgnored="false ...
- 具体解释VMware 9.0.1安装MAC OS X 10.8(历时近3日感想篇)
突然心血来潮,想用VMware 9.0.1安装MAC OS X,但网上的文章多多少少总有点缺陷,不能适合每个人,在综合了近30篇安装MAC OS X的文章后,我决定公布一篇比較大众化,比較详尽的MAC ...