您的位置:首页 > 其它

uva 122 Tree Summing

2016-04-09 00:35 330 查看
这是一道比较经典的回溯法的水题,运了二叉原理
#include <iostream>
#include <cstdio>

using namespace std;
int back_tracking(int n,int *t);
char input();
char input()
{
char ch;
scanf("%c",&ch);
while(ch ==' '||ch == '\n')
{
scanf("%c",&ch);
}
return ch;
}
int back_tracking(int n,int *t)
{
int value;
int temp;
int flag = 0,l= 0,r = 0;

scanf("%d",&value);
temp = input();
if(temp == '(')
{
if ( back_tracking( n-value, &l ) ) flag = 1;
temp = input();
if ( back_tracking( n-value, &r ) )flag = 1;
temp = input();
if ( l && r ) flag = (n==value);
}
else
*t = 1;
return flag;

}
int main()
{
int n,temp;
while(~scanf("%d",&n))
{
input();
if(back_tracking(n,&temp))
printf("yes\n");
else
printf("no\n");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: