您的位置:首页 > 其它

UVa712_S-Trees

2015-03-24 20:24 369 查看
题目:点击打开链接

思路:对于一节点k,其左右节点编号分别为2k,2k+1。然后模拟题意即可。原题输入比较多,但输入X1、X2.....没有用到。

#define _CRT_SECURE_NO_WARNINGS
#include<cstdio>
#include<stack>
#include<vector>
#include<queue>
#include<cstring>
#include<sstream>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;

int main(){
//freopen("random_numbers.txt","r",stdin);
int n,kase=0;
string x[10];//存X1,X2....Xn的值,但下面程序并不需要
char s[200],x_in[10];
while (cin >> n&&n){
for (int i = 0; i < n; i++) cin >> x[i];
for (int i = 0; i < (1 << n); i++) cin >> s[i]; //根节点的值
int T; cin >> T;
cout << "S-Tree #" << ++kase << ":\n";
while (T--){
for (int i = 0; i <n; i++) cin >> x_in[i];
int k = 1;
for (int i = 0; i <n; i++){
k = x_in[i]=='0' ? 2 * k : 2 * k + 1; //根据每个节点的值选择向“左”还是“右”
}
cout << s[k-(1<<n)];
}
cout << endl<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: