func_code_string: #include <bits/stdc++.h>   double A[1005][1005];   void guass(int n) {     int i, j;     for (i = 0; i < n - 1; i++) {       double f = A[i + 1][i] / A[i][i];       for (j = i; j < n; j++) {         if (j > i + 2) break;         A[i + 1][j] -= f * A[i][j];       }       A[i + 1][n] -= f * A[i][n];     }     for (i = n - 1; i >= 0; i--) {       if (i + 1 < n) A[i][n] -= A[i + 1][n] * A[i][i + 1];       A[i][n] /= A[i][i];     }   }   int main() {     int n, m, x, y, cnt;     while (~scanf( %d%d%d%d , &n, &m, &x, &y)) {       for (; x < n; x++) {         for (int i = 1; i <= m; i++) {           cnt = 2 + (i > 1) + (i < m);           A[i - 1][i - 1] = ((double)(cnt - 1)) / cnt;           if (i > 1) A[i - 1][i - 2] = (-1.0) / cnt;           if (i < m) A[i - 1][i] = (-1.0) / cnt;           A[i - 1][m] = A[i - 1][m] / cnt + 1;         }         guass(m);       }       printf( %.10f n , A[y - 1][m]);     }     return 0;   }   