简单概率题,新加SPJ,注意n可能是偶数=。=
#include<bits/stdc++.h>
#define N 110
using namespace std;
int n;
double dp[N][N][N];
int main(){
while(scanf("%d",&n)!=-1){
for(int i=0;i<=n;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
dp[j][k][i]=0;
dp[n/2+1][n/2+1][0]=1;
double ans=0;
for(int i=0;i<n;i++){
for(int x=1;x<=n;x++){
for(int y=1;y<=n;y++){
int bs=4;
if(x==1||x==n) bs--;
if(y==1||y==n) bs--;
if(x!=1) dp[x-1][y][i+1]+=dp[x][y][i]/bs;
if(x!=n) dp[x+1][y][i+1]+=dp[x][y][i]/bs;
if(y!=1) dp[x][y-1][i+1]+=dp[x][y][i]/bs;
if(y!=n) dp[x][y+1][i+1]+=dp[x][y][i]/bs;
}
}
ans+=dp[n/2+1][i+1][i+1];
dp[n/2+1][i+1][i+1]=0;
}
printf("%.4lf\n",ans);
}
return 0;
}