日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java实现 LeetCode 808 分汤 (暴力模拟)

發(fā)布時間:2024/1/8 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java实现 LeetCode 808 分汤 (暴力模拟) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

808. 分湯

有 A 和 B 兩種類型的湯。一開始每種類型的湯有 N 毫升。有四種分配操作:

提供 100ml 的湯A 和 0ml 的湯B。
提供 75ml 的湯A 和 25ml 的湯B。
提供 50ml 的湯A 和 50ml 的湯B。
提供 25ml 的湯A 和 75ml 的湯B。
當我們把湯分配給某人之后,湯就沒有了。每個回合,我們將從四種概率同為0.25的操作中進行分配選擇。如果湯的剩余量不足以完成某次操作,我們將盡可能分配。當兩種類型的湯都分配完時,停止操作。

注意不存在先分配100 ml湯B的操作。

需要返回的值: 湯A先分配完的概率 + 湯A和湯B同時分配完的概率 / 2。

示例:
輸入: N = 50
輸出: 0.625
解釋:
如果我們選擇前兩個操作,A將首先變?yōu)榭?。對于第三個操作,A和B會同時變?yōu)榭?。對于第四個操作,B將首先變?yōu)榭铡?br /> 所以A變?yōu)榭盏目偢怕始由螦和B同時變?yōu)榭盏母怕实囊话胧?0.25 *(1 + 1 + 0.5 + 0)= 0.625。
注釋:

0 <= N <= 10^9。
返回值在 10^-6 的范圍將被認為是正確的。

class Solution {//都是25的倍數(shù),我們可以除先25public double soupServings(int N) {if(N>=4800) {return 1.0;}int n=(int)Math.ceil(N/25.0);double[][] dp=new double[n+1][n+1];//特殊條件dp[0][0]=0.5;for(int i=1;i<n+1;i++) {dp[i][0]=0;dp[0][i]=1;}for(int i=1;i<n+1;i++) {int a1=i-4>0?i-4:0;int a2=i-3>0?i-3:0;int a3=i-2>0?i-2:0;int a4=i-1>0?i-1:0;for(int j=1;j<n+1;j++) {int b1=j;int b2=j-1>0?j-1:0;int b3=j-2>0?j-2:0;int b4=j-3>0?j-3:0;dp[i][j]=0.25*(dp[a1][b1]+dp[a2][b2]+dp[a3][b3]+dp[a4][b4]);}}return dp[n][n];} }

總結(jié)

以上是生活随笔為你收集整理的Java实现 LeetCode 808 分汤 (暴力模拟)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。