这题关键是 反转 查询是固定按照x1x2x3来的 那么先收集前面的顺序 然后在数组里面直接调用即可
比如前面的树是 x3 x1 x2 就把这个当作数组下标
最左边的树是 1<<n
左结点 2k 右节点 2k+1
#include#include using namespace std;const int maxn = 10;int n, v[maxn];//映射表string leaves;int solve(const string& q) { int u = 1; for(int i = 0; i < n; i++) { if(q[v[i]] == '0') u *= 2; else u = u*2+1; } return leaves[u-(1< > n && n) { string s; cout << "S-Tree #" << ++kase << ":\n"; for(int i = 0; i < n; i++) { cin >> s; v[i] = s[1] - '1'; } int m; cin >> leaves >> m; while(m--) { string q; cin >> q; cout << solve(q); } cout << "\n\n"; } return 0;}