鱼C论坛

 找回密码
 立即注册
查看: 2246|回复: 3

[已解决]大佬帮忙优化代码,我的代码运算量太大了

[复制链接]
发表于 2023-3-2 13:56:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目
某电影院的电影票出售方式很特别,它们只准备了两种电影票。
A 类票——免费球票
B 类票——双倍价钱球票。
购买时由工作人员通过掷硬币决定,投到正面的买 A 类票, 反面的买 B 类票。由于是市场经济,主办方不可能倒贴钱,所以他们总是准备了同样多的 A 类票和 B 类票。

你和你的朋友十分幸运的排到了某场精彩电影的最后两个位置。

这时工作人员开始通过硬币售票。不过更为幸运的是当工作人员到你们面前时他发现已无需再掷硬币了,因为剩下的这两张票全是免费票。

你和你的朋友在欣喜之余,想计算一下排在队尾的两个人同时拿到一种票的概率是多少(包括同时拿 A 类票或 B 类票)

假设工作人员准备了 2N张电影票,其中 N 张 A 类票,N 张 B 类票,并且排在队伍中的人每人必须且只能买一张电影票(不管掷到的是该买 A 还是该买 B)。


输入
输入文件仅一行,包含整数 2N,代表 A、B 类票各 N 张。其中(0≤N≤1250) ,N 为整数。

输出
输出只包含一个数,为拿到同一种票的概率,精确到小数点后 4 位。

样例
输入:256
输出:0.9500






代码如下:


import random
shuffle_times =1000000
total_piao =int(input())
balls = [1]*(total_piao//2) + [2] *(total_piao//2)
for _ in range(shuffle_times):
    random.shuffle(balls)

same_balls = sum([1 for i in range(len(balls)-1) if balls[i] ==balls[i+1]])
probability = same_balls / (total_piao-1)
if total_piao==0:
    print("0.0000")
else:
    print("%.4f" % probability)
最佳答案
2023-3-2 15:08:40
网上的动态规划的解法,我给你转成PY代码,原理我是看不懂 啊
dp=[]
n=256
for i in range(n+1):
    dp.append([0])
    for j in range(n+1):
        dp[i].append(0)
dp[0][0]=1
for i in range(1,n+1):
    dp[i][0]=dp[i-1][0]*0.5
    for j in range(1,n//2+1):
        if j==n//2:
            dp[i][j]=dp[i-1][j-1]*0.5+dp[i-1][j]   
        else:
            dp[i][j]=dp[i-1][j-1]*0.5+dp[i-1][j]*0.5
print((dp[n-2][n//2])*2)                
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-2 14:10:57 | 显示全部楼层
这个问题的答案不是128/256*(127/255) 约等于四分之一吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-2 15:08:40 | 显示全部楼层    本楼为最佳答案   
网上的动态规划的解法,我给你转成PY代码,原理我是看不懂 啊
dp=[]
n=256
for i in range(n+1):
    dp.append([0])
    for j in range(n+1):
        dp[i].append(0)
dp[0][0]=1
for i in range(1,n+1):
    dp[i][0]=dp[i-1][0]*0.5
    for j in range(1,n//2+1):
        if j==n//2:
            dp[i][j]=dp[i-1][j-1]*0.5+dp[i-1][j]   
        else:
            dp[i][j]=dp[i-1][j-1]*0.5+dp[i-1][j]*0.5
print((dp[n-2][n//2])*2)                
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-2 15:09:10 | 显示全部楼层
0.949985521005287
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-2 01:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表