HDU 1022 - Train Problem I
直接模拟栈 ,先进后出
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 int n,cnt,cnt2; 5 char s1[100000],s2[100000],a[100000]; 6 string ans; 7 int main() 8 { 9 while(~scanf("%d%s%s",&n,&s1,&s2)) 10 { 11 ans.clear();//这行很要紧 12 bool flag=1; 13 cnt2=cnt=0; 14 int i=0; 15 while(i<n) 16 { 17 if(cnt && a[cnt-1]==s2[cnt2]) 18 { 19 ans+="out\n"; 20 cnt--; 21 cnt2++; 22 } else { 23 a[cnt++]=s1[i++]; 24 ans+="in\n"; 25 } 26 } 27 while(cnt2<n) 28 { 29 if(s2[cnt2]!=a[cnt-1]){ 30 flag=0; break; 31 } else { 32 ans+="out\n"; 33 cnt--; 34 cnt2++; 35 } 36 } 37 if(flag){ 38 puts("Yes."); 39 cout<<ans; 40 } else { 41 puts("No."); 42 } 43 puts("FINISH"); 44 } 45 }//2016-04-22 23:07:08
我自倾杯,君且随意