這個題就是棧的思想的一個題。本身很簡單,不過因爲是個英文題目,所以對題目理解不透····唉,所以悲劇的wa了多次。因爲沒有看清楚最後那個FINISH全都是大寫的····毫無懸念的WA了。
題目很簡單。就是你需要你需要判斷一下前面輸入的數據能不能按照後面的順序輸出出來。可以直接進棧然後出棧,也可以先存入,後出棧。
題目地址:點擊打開鏈接。
代碼如下:
#include<iostream>
#include<stack>
#include<string.h>
using namespace std;
int main()
{
int i,c[30],k,l,n;
char a[20],b[20];
while(cin>>n)
{
l=0;//標記一下進出
k=0;//標記一下已經正確輸出的元素個數
memset(c,0,sizeof(c));
stack<char>s;
while(!s.empty())
s.pop();//把裏面的元素全部清空
cin>> a>> b;
for(i=0;i<n;i++)
{
s.push(a[i]);c[l++]=1;
while(!s.empty() && s.top() == b[k])
{
k++;
s.pop();
c[l++]=2;//最好不要定義爲0,避免不必要的錯誤,後面即便是l多加了,也不會多輸出
}
}
if(s.empty())
{
cout<<"Yes."<<endl;
for(i=0;i<=l;i++)
{
if(c[i]==1)cout<<"in"<<endl;
if(c[i]==2)cout<<"out"<<endl;
}
}
else
cout<<"No."<<endl;
cout<<"FINISH"<<endl; //悲劇的根源啊·····
}return 0;
}
這個題其實給了我一個教訓,即便是非常簡單的題目,如果不注意小細節的話,那也是不可能對的。真正比賽的時候沒有什麼過程分,對就是對,錯就是錯。所以我還需要多多注意小細節··········