天天看點

機率題 寶劍更新需要多少寶石

你有一把寶劍。每使用一個寶石,有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;
}
           

繼續閱讀