如果用按位操作符就一定要加括号。。
除非你能都搞懂…
还有啊这题get到新知识 二分式比赛的方法
//MADE BY Y_is_sunshine; //#include //#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define INF 0x3f3f3f3f #define MAXN 1005 const int mod = 1e9 + 7; const double PI = acos(-1); using namespace std; double dp[10][1 << 8 + 5]; double d[1 << 8 + 5][1 << 8 + 5]; int main(void) { freopen("data.txt", "r", stdin); int N; while (cin >> N) { if (N == -1) break; int tot = 1 << N; for (int i = 0; i < tot; i++) { for (int j = 0; j < tot; j++) scanf("%lf", &d[i][j]); } memset(dp, 0, sizeof(dp)); for (int i = 0; i <= tot; i++) dp[0][i] = 1; for (int i = 1; i <= N; i++) { for (int j = 0; j < tot; j++) { for (int k = 0; k < tot; k++) { if (j >> (i - 1) == (k >> (i - 1) ^ 1)) dp[i][j] += dp[i - 1][j] * dp[i - 1][k] * d[j][k]; } } } int flag = 0; double max_ans = 0; for (int i = 0; i <= tot; i++) { if (dp[N][i] > max_ans) max_ans = dp[N][i], flag = i; } cout << flag + 1 << endl; } freopen("CON", "r", stdin); system("pause"); return 0; }