func_code_string: #include <bits/stdc++.h>   using namespace std;   double p[70][70], r[7][70], e[7][70], mx[7][70];   int main() {     memset(p, 0, sizeof(p));     memset(r, 0, sizeof(r));     memset(e, 0, sizeof(e));     memset(mx, 0, sizeof(mx));     int n = 0;     scanf( %d , &n);     int m = 1 << n;     int x = 0;     for (int i = 1; i <= m; ++i) {       for (int j = 1; j <= m; ++j) {         scanf( %d , &x);         p[i][j] = (double)x / 100.0;       }     }     for (int i = 1; i <= m; ++i) {       r[0][i] = 1.0;     }     for (int i = 1; i <= n; ++i) {       for (int j = 1; j <= m; j += 1 << i) {         for (int k = j; k < j + (1 << i); ++k) {           int le = 0, ri = 0;           if (k >= j + (1 << (i - 1))) {             le = j;             ri = j + (1 << (i - 1));           } else {             le = j + (1 << (i - 1));             ri = j + (1 << i);           }           for (int l = le; l < ri; ++l) {             if (k == l) {               continue;             }             r[i][k] += r[i - 1][k] * p[k][l] * r[i - 1][l];           }           e[i][k] = r[i][k] * (1 << (i - 1)) + mx[i - 1][le] + e[i - 1][k];           if (e[i][k] > mx[i][j]) {             mx[i][j] = e[i][k];           }         }       }     }     double res = 0.0;     for (int i = 1; i <= m; ++i) {       res = max(res, mx[n][i]);     }     printf( %.10lf , res);     return 0;   }   