想到了一个办法,也 AC 了,但感觉是错的,不知道为什么:
#include <bits/stdc++.h>
using namespace std;
const int N = 3005;
double f[N][N];
int main()
{
int n;
cin >> n;
n = n / 2;
f[1][1] = 1;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
{
if (i == 1 && j == 1) continue;
f[i][j] = f[i - 1][j] * 0.5 + f[i][j - 1] * 0.5 * (i + j - 1) / (i + j - 1);
}
printf("%.4f", 1 - f[n][n]);
return 0;
}