0
下面我已經上傳了一個代碼來檢查字符串中的括號是否平衡或不使用堆棧。它爲1輸入工作,但對於多個測試用例正確輸出不能正常工作。請提前幫助。錯誤的輸出,當使用測試用例時,它工作正常(使用堆棧)
int main()
{
int t;
cin >>t;
cin.ignore();
while(t--)
{
{
stack s;
char *st;
st=new char[100];
gets(st);
s.create(strlen(st));
if(!count_elem(st))//counts if the brackets are in pairs or not
cout << "NO" <<endl;
else
func1(s,st);
}
}
return 0;
}
void func1(stack s,char *st)
{
static int i=0,flag=0;
// printf("%d %d\n",i,flag);
if(st[i]=='(' || st[i]=='{' || st[i]=='[')
{
flag=1;
s.push(st[i]);
}
else
{
if(s.isEmpty())
flag=0;
else
{
if(st[i]=='}')
{
//printf("%c\n",s.get_top());
if(s.get_top()=='{')
{
flag=1;
s.pop();
}
else
flag=0;
}
if(st[i]==')')
{
//printf("%c\n",s.get_top());
if(s.get_top()=='(')
{
flag=1;
s.pop();
}
else
flag=0;
}
if (st[i]==']')
{
//printf("%c\n",s.get_top());
if(s.get_top()=='[')
{
flag=1;
s.pop();
}
else
flag=0;
}
}
}
i++;
if(flag==1)
{
if(i<strlen(st))
func1(s,st);
else
cout << "YES"<<endl;
}
else
cout << "NO"<< endl;
}
對於哪種測試用例會失敗? – Beta
第一個測試用例總是正確的,但它只是顯示了隨後所有其他測試用例的隨機輸出。 – cooltogo
第一個,呃?我並沒有問你*有多少*測試失敗,我沒有問你*按照什麼順序*你運行通過和失敗的測試,我要求一個失敗的測試用例。投票結束。 – Beta