zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    robotframework----模板的使用
    RF执行顺序
    RobotFrameWork(四)变量运算与Evaluate
    RobotFrameWork(三)数据类型
    git 命令
    常用网站
    git 应用
    ie if判断
    移动端rem适配
    绘制三角形(sass)
  • 原文地址:https://www.cnblogs.com/bxd123/p/10317749.html
Copyright © 2011-2022 走看看