首先關於這道題,暴力求解肯定是不可取的。核心思路是利用動態規劃(dp)建立概率表來解決。
我們注意到問題的關鍵是如何求得前 i 道題有 j 道題答對的概率。用f[i]表示第 i 道題答對的概率。
用dp[i][j]來表示前 i 道題有 j 道題答對的概率,因而根據第 i 道題是否答對可以有遞推公式:dp[i][j] = dp[i-1][j] *(1- f[i]) + dp[i-1][j-1] * f[i];
有了這個核心思路,接下來要注意邊界問題:當i=0時或j=0時的考慮。易知:dp[0][0] = 1.0 dp[i][0] = dp[i-1][0] * (1-f[i])
除此之外,要注意向上取整的小技巧:例如對a*0.6向上取整可有:int low = (a*3+4)/5;
ac code如下:
1 #include 2#define maxn 110
3using
namespace
std;45
intn, a[maxn];
6double
dp[maxn][maxn];78
intmain()921
22int low = (3*n+4)/5;//
向上取整
23double ans = 0.0;24
for(int i = low; i <= n; i++)
25 ans +=dp[n][i];
26 printf("
%.5f\n
",ans);
27return0;
28 }
京東筆試程式設計題。。消消樂
題目是 輸入5 5的矩陣,數值大小為1 5,上下左右相同的數值達到3個或以上可消除,每次都消除可消除的最大的那個區域,消除後的剩餘數值?由重力作用向下移動,求按此規則消除,直到無法消除時,剩餘未消除數值的個數。例如 31211 第一次 xx xx xx 3x2xx 3x223 第二次 xx xx x...
京東2015校招筆試程式設計題
醜數問題,在 劍指offer 一書的182頁有詳細討論。簡單來說,就是 新的醜數總是以前的某個醜數乘以2 3或5產生,那麼分別用三個指標p2 p3和p5指向乘以2 3和5後能生成新的醜數的醜數,那麼下乙個醜數就是它們生成的新的醜數中最小的乙個。public static int kthnumber ...
京東2018實習C 筆試程式設計題
ifndef jingdongbishi h define jingdongbishi h 求1 n的最小公倍數。把每個數字分解質因數,算他們每個質因數的貢獻,然後乘起來。根據唯一分解定理和最小公倍數定理,求每個質數相乘即可 define maxn 100009 最大的資料n為100000 int ...