6-2 S树 uva712

Posted bxd123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6-2 S树 uva712相关的知识,希望对你有一定的参考价值。

这题关键是  反转    查询是固定按照x1x2x3来的   那么先收集前面的顺序  然后在数组里面直接调用即可

比如前面的树是 x3 x1 x2  就把这个当作数组下标

最左边的树是 1<<n

左结点 2k  右节点 2k+1

技术分享图片
#include<iostream>
#include<string>
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)] - 0;
}

int main() {
  int kase = 0;
  while(cin >> n && n) {
    string s;
    cout << "S-Tree #" << ++kase << ":
";
    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 << "

";
  }
  return 0;
}
View Code

 

以上是关于6-2 S树 uva712的主要内容,如果未能解决你的问题,请参考以下文章

习题6_2 S树(S-Trees, UVa712)

UVA - 712 S-Trees(S树)

UVA-712-二叉树

UVa712 S-Trees (二叉树)

S-Tree (UVa 712) 二叉树

UVa 712 - S-Trees