• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

[lua]笔试-组合概率

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
--[[
组合概率
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

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
FirstLuafunctionrunninginC发布时间:2022-07-22
下一篇:
编写高性能的Lua代码发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap