Pagini recente » Cod sursa (job #2914217) | Cod sursa (job #21739) | Cod sursa (job #3126787) | Cod sursa (job #2310948) | Cod sursa (job #637248)
Cod sursa(job #637248)
#include <cstdio>
#include <cstring>
using namespace std;
int N, M;
long double D[2][22][22];
long double sol;
int main() {
freopen("minesweeper.in", "r", stdin);
freopen("minesweeper.out", "w", stdout);
scanf("%d%d", &N, &M);
N *= M;
D[0][N][0] = 1;
for (int i = 1; i <= 15000; i++) {
for (int j = 0; j <= N; j++)
for (int k = 0; k <= N - j; k++) {
int l = N - j - k;
// for (int l = 0; l <= N - j - k; l++) {
if (l == N)
continue;
if (j > 0)
D[1][j - 1][k + 1] += (1.0 * j) / (1.0 * N) * D[0][j][k];
if (k > 0)
D[1][j][k - 1] += (1.0 * k) / (1.0 * N) * D[0][j][k];
if (l > 0)
D[1][j + 1][k] += (1.0 * l) / (1.0 * N) * D[0][j][k];
// }
}
// fprintf(stderr, "%d %Lf\n", i, D[1][0][0][N]);
sol += i * D[1][0][0];
memcpy(D[0], D[1], sizeof(D[0]));
memset(D[1], 0, sizeof(D[1]));
}
printf("%Lf\n", sol);
return 0;
}