`
249326109
  • 浏览: 53610 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

uva 712 - S-Trees

    博客分类:
  • acm
 
阅读更多

题目有点长,但是思路很简单,找出每次的路径2进制序列然后在叶子里找到对应的0或1值即可。

 

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int orders[10];
char leaves[200];
int num=1;
int main() {
	int n;
	char str[10];
	while (scanf("%d", &n) != EOF) {
		if (n == 0)
			break;
		printf("S-Tree #%d:\n",num++);
		int i;
		for (i = 0; i < n; i++) {
			scanf("%s", str);
			orders[i] = atoi(str + 1);
		}
		scanf("%s", leaves);
		int m;
		scanf("%d", &m);
		char vva[10];
		for (i = 0; i < m; i++) {
			scanf("%s", vva);
			int j;
			char binary[10];
			for (j = 0; j < n; j++) {
				binary[j] = vva[orders[j] - 1];
			}
			binary[n] = 0;

			int idx = 0;
			int k;
			for (k = 0; k < n; k++) {
				if (binary[k] - '0')
					idx += pow(2, n - 1 - k);
			}
			printf("%d", leaves[idx]-'0');

			if (i == m - 1)
				printf("\n\n");

		}

	}

	return 0;
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics