题目链接:https://vjudge.net/problem/LightOJ-1030
题意:有一个长为n的洞,每个位置都有a[i]的黄金,最初你在1号位置,每次你都会转一个6面体的色子,然后你的位置也会进行相应的增加,每次你都可以获得相应位置的黄金,问你走完这个洞,获得黄金的期望值。
思路:设dp[i]表示为从第i个位置开始走获得黄金的期望值,dp[i]的初值就是a[i],然后dp[i]可以由后6个转换而来。
#include<bits/stdc++.h> #include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> using namespace std; typedef long long ll; double dp[2005]; int main() { int t,u=0; cin>>t; while(t--) { int n; cin>>n; for(int i=1;i<=n;i++) cin>>dp[i]; for(int i=n-1;i>=1;i--) { int x=min(n-i,6); for(int j=i+1;j<=i+x;j++) dp[i]=dp[i]+dp[j]/x; } printf("Case %d: %.6lf\n",++u,dp[1]); } }
原文:https://www.cnblogs.com/zcb123456789/p/13731256.html