好吧,我出的坑爹签到题= =,答案可以手推,也可以开数组递推。
答案有三种情况:n=0,n为奇数,n为偶数。
分类输出答案即可。
解1:
#include <cstdio>
int main(){
int n;
while((scanf("%d",&n))==1){
if(n==0) puts("0.00 0.00 1.00 0.00 0.00");
else{
if(n&1) puts("0.00 0.50 0.00 0.50 0.00");
else puts("0.25 0.00 0.50 0.00 0.25");
}
}
return 0;
}
解2:
#include <cstdio>
#include <cstring>
const int N=10000;
int n;
double dp[N+5][5];
int main()
{
memset(dp,0,sizeof(dp));
dp[0][2]=1;
for (int i=0;i<N;i++)
{
dp[i+1][1]+=dp[i][0];
for (int j=1;j<=3;j++)
{
dp[i+1][j-1]+=dp[i][j]*0.5;
dp[i+1][j+1]+=dp[i][j]*0.5;
}
dp[i+1][3]+=dp[i][4];
}
while (scanf("%d",&n)==1)
{
for (int i=0;i<5;i++)
printf("%.2lf ",dp[n][i]);
printf("\n");
}
return 0;
}