0)
①敲题之前没理解清题意,输入的x1 x2 x3 是有用的...,要做相应的映射。
②(0<<1)是0而不是1。
int i=0;int res;
res=pow(2,0); //res==1,没错
res=i<<1; //res==0,而不是我们认为的2^0=1
③自己试验时代码敲了freopen(),Submit前一定要去掉...
1)
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
using namespace std;
string ye;;
string com;
int vv[10];
int num;
void Find(){
int pos=0;
int sum=0;
for(int i=num-1;i>=0;i--){
pos+=((com[vv[sum++]-1]-'0')*(pow(2,i)));
}
//因为0<<1,认为是0而不是我们所认为的1
cout<<ye[pos];
}
int main()
{
//cout<<(0<<1)<<endl;
//cout<<pow(2,0)<<endl;
//freopen("stdout1.txt","w",stdout);
int quire;
int kase=1;
while(cin>>num&&num!=0){
printf("S-Tree #%d:\n",kase++);
string temp;
for(int i=0;i<num;i++){
cin>>temp;
vv[i]=temp[1]-'0';
}
cin>>ye;
cin>>quire;
while(quire--){
cin>>com;
Find();
}
cout<<endl<<endl;
}
return 0;
}
2)题目链接
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=118967#problem/B