倚天照海花无数,流水高山心自知。
写了第一个.看看有什么BUG没.
大家继续讨论.
非常感谢大家的支持.
#include<stdio.h>
int main()
{
char str[100];
int a[100];
int top,i,j,min,flag;
while(EOF!=(scanf("%s",str)))
{
top=0;
min=5;//设定当前优先级
for(i=0;str[i]!='\0';i++)
{
flag=1;//左括号
switch(str[i])
{
case '{': a[top]=4;break;
case '[': a[top]=3;break;
case '(': a[top]= 2;break;
case '<': a[top]=1;break;
default :flag=0;break; //右括号
}
if(flag==1)
{
if(a[top]>min)
{
printf("false\n");
return 1;
}
else
{
min=a[top];
top++;
}
}
else
{
switch(str[i])
{
case '}': a[top]=-4;break;
case ']': a[top]=-3;break;
case ')': a[top]= -2;break;
case '>': a[top]=-1;break;
default :printf("false\n"); return 1;
}
if(top<1||a[top-1]*-1!=a[top])
{
printf("false\n");
return 1;
}
else
{
if(top>2)
{
top--;
min=a[top-1];
}
else
{
top=0;
min=5;
}
}
}
}
printf("ture\n");
}
return 1;
}
请不要误会.
[此贴子已经被作者于2007-3-19 23:36:46编辑过]