#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;
}
POJ-1145
最新推荐文章于 2020-01-07 01:14:05 发布