【习题 6-2 UVA - 712】S-Trees
2017-11-19 16:35
288 查看
【链接】 我是链接,点我呀:)
【题意】
在这里输入题意
【题解】
dfs模拟一下就好。
先预处理一个dfs.
搞出来x叶子节点它的值是什么
【代码】
/* 1.Shoud it use long long ? 2.Have you ever test several sample(at least therr) yourself? 3.Can you promise that the solution is right? At least,the main ideal 4.use the puts("") or putchar() or printf and such things? 5.init the used array or any value? 6.use error MAX_VALUE? */ #include <bits/stdc++.h> using namespace std; const int N = 10; int n,Q;//depth int de ; int val ,key[1024],now; string KEY; void dfs1(int x,int dep){ if (dep>n){ key[x] = KEY[now++] - '0'; return; } dfs1(x*2,dep+1); dfs1(x*2+1,dep+1); } int dfs2(int x,int dep){ if (dep > n){ return key[x]; } if (val[de[dep]]==0){ return dfs2(x*2,dep+1); }else { return dfs2(x*2+1,dep+1); } } int main(){ #ifdef LOCAL_DEFINE freopen("F:\\c++source\\rush_in.txt", "r", stdin); #endif ios::sync_with_stdio(0),cin.tie(0); int Kase = 0; while (cin>> n && n){ cout << "S-Tree #" << ++Kase <<':'<<endl; now = 0; for (int i = 1;i <= n;i++){ string temp; cin >> temp; de[i] = temp[1]-'0'; } cin >> KEY; dfs1(1,1); cin >> Q; for (int i = 1;i <= Q;i++){ string temp; cin >> temp; for (int j = 0;j < n;j++) val[j+1] = temp[j] - '0'; cout << char(dfs2(1,1) + '0'); } cout << endl; cout << endl; } return 0; }
相关文章推荐
- 习题6-2 S-Trees UVA - 712 满二叉树
- Uva712 S-Trees 【二分思想】【习题6-2】
- 算法入门经典习题6-2,uva712,S-Trees
- 习题6-2 S树(S-Trees, UVa 712)
- UVa712 习题6-2 S树(S-Trees)
- 算法竞赛入门经典 第二版 习题6-2 S树 S-Trees uva712
- uva 712-S-Trees
- 习题6-2 UVA 712 S-Trees S树
- UVa 712 - S-Trees解题报告
- uva 712 S-Trees(利用二叉树的特点)
- UVA 712 S-Trees
- UVa 712 - S-Trees
- UVA 712 - S-Trees
- uva 712 - S-Trees
- UVA - 712 S-Trees
- uva 712 S-Trees
- 习题6-2 S树 UVa 712
- UVA_712 - S-Trees
- UVA 712 - S-Trees
- UVa 712 S-Trees(满二叉树数组保存与编号)