码迷,mamicode.com
首页 > 其他好文 > 详细

6-2 S树 uva712

时间:2019-01-25 11:34:01      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:pen   color   max   pre   turn   技术   数组下标   cin   int   

这题关键是  反转    查询是固定按照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 << ":\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;
}
View Code

 

6-2 S树 uva712

标签:pen   color   max   pre   turn   技术   数组下标   cin   int   

原文地址:https://www.cnblogs.com/bxd123/p/10317749.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!