这题的输入有些麻烦,参考了人家的代码,很简洁,很厉害
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<string>
using namespace std;
int flag;
int t_sum(int n,int sum)
{
int data;
char c;
cin>>c; //输入左括号
cin>>data;
if(!(cin==0))
{
sum+=data;
int ok1=t_sum(n,sum); //左树
int ok2=t_sum(n,sum); //右树
if(!ok1&&!ok2&&!flag) //如果左右两树都为空,即是叶子,且flag还是0,那么对总和sum与n进行比较
if(sum==n) //若相等则将flag赋为1
flag=1;
cin>>c; //输入右括号
return 1;
}
else
{
cin.clear(); //清除错误
cin>>c;
return 0;
}
}
int main()
{
int n;
while(cin>>n)
{
flag=0;
t_sum(n,0);
cout<<(flag?"yes":"no")<<endl;
}
return 0;
}

1077

被折叠的 条评论
为什么被折叠?



