演算法程式設計題積累(2) 京東筆試「求概率」問題

2022-07-20 20:45:12 字數 816 閱讀 1903

首先關於這道題,暴力求解肯定是不可取的。核心思路是利用動態規劃(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 ...