你有一把寶劍。每使用一個寶石,有50%的機率會成功讓寶劍升一級,50%的機率會失敗。 如果寶劍的級數大于等于5的話,那麼失敗會使得寶劍降1級。如果寶劍的級數小于5的話, 失敗沒有效果。問題是:期望用多少個寶石可以讓一把1級的寶劍升到9級?
i<5 : dp[i] + 1 = 0.5 * dp[i+1] + 0.5 * dp[i]
i >= 5: dp[i] + 1 = 0.5 * dp[i-1] + 0.5 * dp[i+1]
void solve(int n ) {
int dp[n+1];
dp[1] = 0;
for (int i = 2; i <= n; i++) {
if (i <= 5) {
dp[i] = dp[i-1] + 2;
} else {
dp[i] = 2 * dp[i-1] + 2 - dp[i-2];
}
printf( "dp[%d]=%d\n", i, dp[i] );
}
}
int main(int argc, char *argv[]) {
// freopen("A.txt", "r", stdin);
solve(11);
return 0;
}