美文网首页
B - Train Problem I

B - Train Problem I

作者: Chilkings | 来源:发表于2019-05-10 12:13 被阅读0次

    火车问题答案
    解题思路

    • 1.如果待入栈火车和最顶目标火车相同就进行连续进栈出栈;

    • 2.若是不相同则只是进栈就行;

    • 3.最后利用出栈次数是否与进栈次数相同进行输出答案;

    #include<string.h>
    #include<stack>
    using namespace std;
    
    int main()
    {
        int n, i, j, k, flag[50]={0};//flag与k记录进出,1表示进0表示出;j表示出栈次数; 
        char s1[15], s2[15];
        stack <char> s;
        while(scanf("%d %s%s",&n,s1,s2)!=EOF)
        {   
            while(!s.empty())  
            s.pop(); //删除首元素
            j = k = 0;
            for(i = 0; i < n; i++)
            {
                s.push(s1[i]);//在队尾插入一个元素
                flag[k++] = 1;
                while(!s.empty() && s.top() == s2[j])
                {
                    flag[k++] = 0;
                    s.pop();
                    j++;
                }
            }
            if(j == n)
            {
                printf("Yes.\n");
                for(i = 0; i < k; i++)
                {
                    if(flag[i])
                        printf("in\n");
                    else
                        printf("out\n");
                }
            }
            else
                printf("No.\n");
            printf("FINISH\n");
        }
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:B - Train Problem I

          本文链接:https://www.haomeiwen.com/subject/ebqumqtx.html