狠啰嗦的模拟题,做法没什么好说的,就是要细心和耐心。
有个地方说下,所谓的空格可以出现在任何地方完全是废话,你就当空格是其他‘a’,‘w‘之类的字符就行。回车符要当不存在,我一开始就是空格和回车纠结死。。
#include<stdio.h>
#include<stdlib.h>
char a,b,c;
long now;
bool zhushi;
bool check(char c)
{
if (zhushi)
return true;
if ((c>=48 && c<=57) || c=='+' || c=='-' || c=='*' || c=='/' || c=='=' || c=='(' || c==')' || c=='\n')
return true;
return false;
}
void exi()
{
printf("NO");
exit(0);
}
char gett()
{
char a;
if (scanf("%c",&a)==EOF)
exi();
else if (now>0)
{
if (!check(a))
exi();
}
if (a=='\n')
return gett();
return a;
}
int main()
{
//freopen("data.in","r",stdin);
while (scanf("%c",&c)!=EOF)
{
while (c=='\n')
if (scanf("%c",&c)==EOF)
{
if (now==0)
printf("YES");
else
printf("NO");
return 0;
}
if (now>0)
{
if (!check(c))
exi();
}
if (c=='(' || a=='(')
{
if (a=='(')
{
b=a;a=c;c=b;
}
else
{
a=gett();
}
if (a=='*')
{
zhushi=true;
a=gett();
b=gett();
while (!((a=='*')&&(b==')')))
{
a=b;
b=gett();
}
zhushi=false;
}
else
{
if (a!=')' && a!=' ')
now++;
else if (a==' ')
exi();
}
}
else if (c==')')
{
now--;
if (now<0)
exi();
}
}
if (now==0)
printf("YES");
else
printf("NO");
}
posted on 2011-07-05 22:47
梦转千寻 阅读(96)
评论(0) 编辑 收藏 引用