func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 100;   double pr[10][N][N], p[N][N], dp[10][N][N];   int n;   int main() {     double ans = 0;     cin >> n;     for (int i = 0; i < (1 << n); i++)       for (int j = 0; j < (1 << n); j++) cin >> p[i][j], p[i][j] /= 100;     for (int i = 0; i < (1 << n); i++) pr[0][i][i] = 1;     for (int i = 1; i <= n; i++)       for (int j = 0; j < (1 << (n - i)); j++) {         int d = (1 << i);         for (int g = 0; g < d; g++) {           int o = d * j + g;           double t = pr[i - 1][j * 2 + (g >= d / 2)][o];           double k = 0;           for (int h = 0; h < d / 2; h++) {             int o2 = d * j + h;             if (g < d / 2) o2 += d / 2;             k += pr[i - 1][j * 2 + (g < d / 2)][o2] * p[o][o2];           }           pr[i][j][o] = k * t;         }       }     for (int i = 1; i <= n; i++)       for (int j = 0; j < (1 << (n - i)); j++) {         int d = (1 << i);         int p3 = (1 << (i - 1));         for (int g = 0; g < d; g++) {           int o = d * j + g;           double t = dp[i - 1][j * 2 + (g >= d / 2)][o];           double p1 = pr[i - 1][j * 2 + (g >= d / 2)][o];           double m = 0;           for (int h = 0; h < d / 2; h++) {             int o2 = d * j + h;             if (g < d / 2) o2 += d / 2;             m = max(m, dp[i - 1][j * 2 + (g < d / 2)][o2]);           }           t += m;           double k = 0;           for (int h = 0; h < d / 2; h++) {             int o2 = d * j + h;             if (g < d / 2) o2 += d / 2;             k += pr[i - 1][(j * 2 + (g < d / 2))][o2] * p[o][o2];           }           t += p1 * p3 * k;           dp[i][j][o] = t;           if (i == n) ans = max(ans, t);         }       }     cout << setprecision(9) << fixed << ans << endl;     return 0;   }   