UVA_712

    模拟题目所说的即可。

#include<stdio.h>
#include<string.h>
#define MAXD 200
int N, M, g[10], a[10];
char b[10], d[MAXD];
void solve()
{
int i, j, k;
for(i = 1; i <= N; i ++)
{
scanf("%s", b);
sscanf(b + 1, "%d", &k);
g[k] = i;
}
scanf("%s", d);
scanf("%d", &M);
for(i = 0; i < M; i ++)
{
scanf("%s", b + 1);
for(j = 1; j <= N; j ++)
a[g[j]] = b[j] - '0';
for(k = 1, j = 1; j <= N; j ++)
{
if(a[j])
k = (k << 1) + 1;
else
k <<= 1;
}
k -= (1 << N);
printf("%c", d[k]);
}
printf("\n");
}
int main()
{
int t = 0;
for(;;)
{
scanf("%d", &N);
if(!N)
break;
printf("S-Tree #%d:\n", ++ t);
solve();
printf("\n");
}
return 0;
}


posted on 2011-12-28 22:11  Staginner  阅读(208)  评论(0编辑  收藏  举报