hdu Train Problem I

这道题是道简单的栈模拟题,只要按照真实情况用栈进行模拟即可:

#include<stdio.h>  
#include<string.h>  
#include<stack>  
using namespace std;  
int main()  
{  
    int n, i, j, k, flag[50];  
    char s1[15], s2[15];  
    stack <char> s;  
    while(~scanf("%d %s%s",&n,s1,s2))  
    {     
        while(!s.empty())  s.pop(); //也可以不写这一句,把 stack <char> s; 就可以了  
        memset(flag,-1,sizeof(flag));  
        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.
");  
            for(i = 0; i < k; i++)  
            {  
                if(flag[i])  
                    printf("in
");  
                else  
                    printf("out
");  
            }  
        }  
        else  
            printf("No.
");  
        printf("FINISH
");  
    }  
    return 0;  
}  
View Code
原文地址:https://www.cnblogs.com/acm-jing/p/4370133.html