有这样两段代码,其中Fi,k指在i 秒后电梯内有k 人的概率
#include <bits/stdc++.h>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
const int C1=2010;
const int C2=2010;
int n,T;
double p;
double F[C1][C2];
double ans=0.0;
int main(int argc, char** argv) {
scanf("%d%lf%d",&n,&p,&T);
cin>>n>>p>>T;
F[0][0]=1.0;
for(int i=1;i<=T;i++)
for(int j=i+1;j<=n;j++)
F[i][j]=0.0;
for(int i=1;i<=T;i++)
{
F[i][0]=F[i-1][0]*(1.0-p);
for(int j=1;j<n;j++)
{
if(j>i)
break;
F[i][j]=F[i-1][j]*(1.0-p)+F[i-1][j-1]*p;
}
if(n>i)
continue;
F[i][n]=F[i-1][n]+F[i-1][n-1]*p;
}
for(int i=0;i<=n;i++)
ans+=F[T][i]*i;
// cout<<fixed<<setprecision(6)<<ans;
printf("%lf",ans);
// cout<<ans;
return 0;
}
//AC Code
#include <bits/stdc++.h>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
const int C1=2010;
const int C2=2010;
int n,T;
double p;
double F[C1][C2];
double ans=0.0;
int main(int argc, char** argv) {
scanf("%d%lf%d",&n,&p,&T);
// cin>>n>>p>>T;
F[0][0]=1.0;
for(int i=1;i<=T;i++)
{
F[i][0]=F[i-1][0]*(1.0-p);
for(int j=1;j<n;j++)
F[i][j]=F[i-1][j]*(1.0-p)+F[i-1][j-1]*p;
F[i][n]=F[i-1][n]+F[i-1][n-1]*p;
}
for(int i=0;i<=n;i++)
ans+=F[T][i]*i;
// cout<<fixed<<setprecision(6)<<ans;
printf("%lf",ans);
// cout<<ans;
return 0;
}
//WA Code
现在是我的问题:是否预先赋值 时间小于人数的F值为0 的区别是什么