首页 > 其他 > 详细

H 1022 Train Problem Ⅰ

时间:2014-05-17 01:38:33      阅读:487      评论:0      收藏:0      [点我收藏+]

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

思路:将序列 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 Ⅰ

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!