POJ-1145
来源:互联网 发布:服务器网络不稳定 编辑:程序博客网 时间:2024/05/16 15:28
#include<stdio.h>int rtol;int left;int dfs(int sum) { int num1, num2; short t1, t2; t1 = t2 = 0; // 左结点 while (getchar() != '(') ; left++; if (scanf("%d", &num1)) { if (dfs(sum+num1)) return 1; t1 = 1; } while (getchar() != ')') ; left--; if (!left) return 0; // 右结点 while (getchar() != '(') ; left++; if (scanf("%d", &num2)) { if (dfs(sum+num2)) return 1; t2 = 1; } while (getchar() != ')') ; left--; // 没有左右结点,则判断是等于rtol if (!t1 && !t2 && rtol == sum) { return 1; } return 0;}int main(){ int num; while (scanf("%d", &rtol) != EOF) { if (dfs(0)) printf("yes\n"); else printf("no\n"); do { switch (getchar()) { case '(' : left++ ; break; case ')' : left--; break; } }while (left); } return 0;}