Parentheses Balance
3 مشترك
صفحة 1 من اصل 1
Parentheses Balance
Parentheses Balance
feras_kassar- الجنس :
عدد المساهمات : 78
السٌّمعَة : 1
تاريخ التسجيل : 19/02/2014
رد: Parentheses Balance
يعطيكون العافية
انا عم بكتب هالكود بس عم يطلعلي time limit exceed
فيني اعرف وين المشكلة
انا عم بكتب هالكود بس عم يطلعلي time limit exceed
فيني اعرف وين المشكلة
- الكود:
#include<iostream>
#include<string>
#include<stack>
using namespace::std;
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
stack<int>sta;
string st;
cin>>st;
for(int i=0;i<st.length();i++)
{
if(st[i] == ')' && !sta.empty() )
{
while(sta.top() != '(' && !sta.empty())
sta.pop();
if(!sta.empty())
sta.pop();
}
else if(st[i] == ']' && !sta.empty())
{
while(!sta.empty() && sta.top() != '[' )
sta.pop();
if(!sta.empty())
sta.pop();
}
else
sta.push(st[i]);
}
if(sta.empty())
cout<< "Yes"<<endl;
else
cout<<"No"<<endl;
}
}
عدل سابقا من قبل MhdAlALwan في الأربعاء فبراير 19, 2014 4:23 pm عدل 2 مرات
MhdAlALwan- الجنس :
عدد المساهمات : 3
السٌّمعَة : 0
تاريخ التسجيل : 19/02/2014
رد: Parentheses Balance
جرب حالة الدخل التالية
1
)(]
1
)(]
feras_kassar- الجنس :
عدد المساهمات : 78
السٌّمعَة : 1
تاريخ التسجيل : 19/02/2014
رد: Parentheses Balance
بعد ازنك عدلتو بس لسا عم يطلعلي wrong answer
- الكود:
#include<iostream>
#include<string>
#include<stack>
using namespace::std;
int main()
{
int n;
string st;
cin>>n;
bool chk;
while(n--)
{
stack<int>sta;
getline(cin,st);
if(st.length() == 1 && st[0] == '\n')
{
cout<<"yes"<<endl;
continue;
}
if(st.length() == 1 || st.length() % 2 != 0 )
{
cout<<"No"<<endl;
continue;
}
for(int i=0;i<st.length();i++)
{
if(st[i] == '(' || st[i] == '[')
sta.push(st[i]);
else if(st[i] == ')' && !sta.empty() && sta.top() == '(')
sta.pop();
else if(st[i] == ']' && !sta.empty() && sta.top() == '[')
sta.pop();
else
chk = 1;
}
if(sta.empty() && chk == 0)
cout<< "Yes"<<endl;
else
cout<<"No"<<endl;
}
}
MhdAlALwan- الجنس :
عدد المساهمات : 3
السٌّمعَة : 0
تاريخ التسجيل : 19/02/2014
رد: Parentheses Balance
في عندك 3 أخطاء:
1- Yes أول حرف كبير
2- لازم تحط cin.get بعد ما تقرأ عدد حالات الدخل لأنو بكون في \n لسى ما قريتها
3- لازم تحط chk=false بعد كل حالة دخل , أنت مالك عاطيها قيمة ابتدئية حتى
1- Yes أول حرف كبير
2- لازم تحط cin.get بعد ما تقرأ عدد حالات الدخل لأنو بكون في \n لسى ما قريتها
3- لازم تحط chk=false بعد كل حالة دخل , أنت مالك عاطيها قيمة ابتدئية حتى
feras_kassar- الجنس :
عدد المساهمات : 78
السٌّمعَة : 1
تاريخ التسجيل : 19/02/2014
رد: Parentheses Balance
تمام زبطت يسلمو
MhdAlALwan- الجنس :
عدد المساهمات : 3
السٌّمعَة : 0
تاريخ التسجيل : 19/02/2014
رد: Parentheses Balance
لو سمحت أنا عم يعطيني wrong answer مع انو ضبط معي وطلع الجواب بس ما بعرف وين المشكلة وهاد الكود..
- الكود:
#include<iostream>
#include<string>
#include<stack>
using namespace::std;
int main()
{int n;
cin>>n;
for(int i=0;i<n;i++)
{
string s;
cin>>s;
stack<char>st;
int x=s.length();
st.push(s[0]);
for(int j=1;j<x;j++)
{
char tmp;
bool l=st.empty();
if(l)st.push(s[j]);
else{
tmp=st.top();
if(tmp=='[')
if(s[j]==']')
st.pop();
else
st.push(s[j]);
else if(tmp=='(')
if(s[j]==')')
st.pop();
else
st.push(s[j]);
else st.push(s[j]);
}}
bool t;
t=st.empty();
if(t)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
}
علا- الجنس :
عدد المساهمات : 19
السٌّمعَة : 1
تاريخ التسجيل : 19/02/2014
رد: Parentheses Balance
في حالة ناقصة أنو اذا كان سطر فاضي لازم يطبع Yes
feras_kassar- الجنس :
عدد المساهمات : 78
السٌّمعَة : 1
تاريخ التسجيل : 19/02/2014
رد: Parentheses Balance
اي شكرا مشي الحال
علا- الجنس :
عدد المساهمات : 19
السٌّمعَة : 1
تاريخ التسجيل : 19/02/2014
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى