UVA 712 S-Tree

来源:互联网 发布:数据库设计的一般步骤 编辑:程序博客网 时间:2024/06/03 19:05

总结规律的题目,输入的时候如果是X1,X2,X3,那么X1对应的权值为4,X2对应的权值为2,X3对应的权值为1,其他的输入依此类推,都是以2为基础的值。对于后续的待判断的输入就计算相应的值,这些值就是在数组中的位置,按照位置找出元素并且输出就行了。具体的实现见源代码:

#include<iostream>#include<vector>#include<string>#include<set>#include<stack>#include<queue>#include<map>#include<algorithm>#include<cmath>#include<iomanip>#include<cstring>#include<sstream>#include<cstdio>using namespace std;int n;int main(){int amount = 0;while (cin >> n){amount++;if (n == 0) break;vector<int> order;for (int i = 0; i < n; i++){string s;cin >> s;int index = 0;for (int j = 1; j < s.size(); j++){index = index * 10 + (s[j]-'0');}order.push_back(index);}string data;cin >> data;int m;cin >> m;vector<char> result;for (int i = 0; i < m; i++){string d;cin >> d;int index = 0;for (int j = 0; j < order.size(); j++){index = index * 2 + (d[order[j]-1]-'0');}result.push_back(data[index]);}cout << "S-Tree #"<<amount<<":" << endl;for (int i = 0; i < result.size(); i++) cout << result[i];cout << endl << endl;}return 0;}



原创粉丝点击