羊肉串 葡萄干 哈密瓜!!
(){}true (){[]}flase这两个结果矛盾
[此贴子已经被作者于2007-3-20 8:30:35编辑过]
#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||-1*a[top-1]!=a[top])
{
printf("false\n");
return 1;
}
else
{
if(top>1)
{
top--;
min=a[top-1];
}
else
{
top=0;
min=5;
}
}
}
}
if(top==0)
{
printf("ture\n");
}
else
{
printf("false\n");
}
}
return 1;
}
谢谢iwfy.