UVa 112 Tree Summing

题意不难理解,水题,不必建树,可以直接字符操作。

 

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<ctype.h>

int n;
int sum[105];
char str;
int main()
{
//	freopen("D:\\1.txt","r",stdin);
	while(scanf("%d",&n) != EOF)
	{
		bool flag = false, lead = false;
		int x = -1;
		int count = 0, m = 0;
		char ch = '#';
		memset(sum,0,sizeof(sum));
		for(;count || ch == '#';)
		{
			str = getchar();
			
			if(str == ' ' || str == '\n')
				continue;
			if(str == '-')
			{
				lead = true;
			}
			if(isdigit(str))
			{
				if(x < 0)
					x = 0;
				x = x * 10 + str - '0';
				m = 0;
			}
			if(x > -1 && !isdigit(str))
			{
				sum[count] = sum[count-1] + (lead ? -1*x : x);
				x = -1;
				lead = false;
			}
			if(str == ')')
			{
				if(ch == '(')
				{
					count--;
					m++;
				}
				if(sum[count] == n && !flag && m >= 2)
				{
					flag = true;
				//	break;
				}
				if(ch != '(')
				{
					m = 0;
					count--;
				}
			}
			if(str == '(')
				count++;
			ch = str;
		}
		if(flag) printf("yes\n");
		else printf("no\n");
	}
	return 0;
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值