码迷,mamicode.com
首页 > 其他好文 > 详细

H 1022 Train Problem Ⅰ

时间:2014-05-17 01:47:36      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   c   tar   

题意:给我们两个序列,看能否通过压栈,出栈将第一个序列转换成第二个。

思路:将序列 1 依次压栈,同时看是否和序列 2 当前元素相同

代码如下:

bubuko.com,布布扣
#include<iostream>
#include<stack>
#define max 100
using namespace std;
int main()
{
    stack<char>s;
    int n,i,j,k,result[max];
    char str1[max],str2[max];
    while(cin>>n>>str1>>str2)
    {
        i=0;
        j=0;
        k=1;
        s.push(str1[0]);   //防止栈空,压一个进去
        result[0] = 1;     //记录进来了一个
        while(i < n && j < n)
        {
            if(s.size() && s.top() == str2[j])  //若栈顶元素与序列 2 当前元素相同
            {
                s.pop();              //出栈
                result[k ++] = 0;
                j ++;
            }
            else
            {
                if(i == n) break;
                s.push(str1[++ i]);
                result[k ++] =1;
            }
        }
        if(i == n)   //表示栈顶元素不等于序列 2 当前元素,且序列 1 中的元素全部入过栈
        {
            cout<<"No.\n";
        }
        else
        {
            cout<<"Yes.\n";
            for(i = 0; i < k; i++)
                if(result[i])
                    cout<<"in\n";
                else
                    cout<<"out\n";
        }
        cout<<"FINISH\n";
    }
    return 0;
}
View Code

 

H 1022 Train Problem Ⅰ,布布扣,bubuko.com

H 1022 Train Problem Ⅰ

标签:style   blog   class   code   c   tar   

原文地址:http://www.cnblogs.com/Houheshuai/p/3725037.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!