UVA 112-Tree Summing
题目大意:输入一个数x,求在树上是否有路径的数之和与x相同
解题思路:第一次做这种题目,一开始没思路,看了大神代码,才学到新知识,递归求解,当左右子树为空时返回
#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
char get() {
char c;
c = getchar();
while(c == ' ' || c == '\n')
c = getchar();
return c;
}
int count(int n, int *d) {
char c;
int p = 0;
int x;
int r = 0, l = 0;
scanf("%d", &x);
c = get();
if(c == '(') {
if(count(n-x, &r) == 1)
p = 1;
get();
if(count(n-x, &l) == 1)
p = 1;
get();
if(r == 1 && l == 1 && n - x == 0)
p = 1;
}
else if(c == ')') {
*d = 1;
}
return p;
}
int main() {
int n;
while(scanf("%d", &n) != EOF) {
get();
int d, s;
s = count(n, &d);
if(s == 1)
cout << "yes" << endl;
else
cout << "no" << endl;
}
return 0;
}