posts - 0,comments - 0,trackbacks - 0
狠啰嗦的模拟题,做法没什么好说的,就是要细心和耐心。
有个地方说下,所谓的空格可以出现在任何地方完全是废话,你就当空格是其他‘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)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航:   博客园   博客园最新博文   博问   管理