代码:
#include<bits/stdc++.h>
using namespace std;
double dp[55][2550][2],f[55][2];
int ans,ask,n,m;
int sum,v;
int main(){
scanf("%d %d %d %d",&n,&m,&v,&sum);
dp[0][0][0]=1;
for(int i=1;i<=n;i++)
{
for(int k=1;k<=m;k++)
{
for(int j=k;j<=sum;j++)
{
if(k==v)
dp[i][j][1]+=dp[i-1][j-k][1]+dp[i-1][j-k][0];
else
{
dp[i][j][1]+=dp[i-1][j-k][1];
dp[i][j][0]+=dp[i-1][j-k][0];
}
}
}
}
f[0][0]=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(j==v)
f[i][1]+=f[i-1][1]+f[i-1][0];
else
{
f[i][1]+=f[i-1][1];
f[i][0]+=f[i-1][0];
}
}
}
printf("%lf",dp[n][sum][1]/f[n][1]);
return 0;
}
来源:zr