首页 > 代码库 > H 1022 Train Problem Ⅰ
H 1022 Train Problem Ⅰ
题意:给我们两个序列,看能否通过压栈,出栈将第一个序列转换成第二个。
思路:将序列 1 依次压栈,同时看是否和序列 2 当前元素相同
代码如下:
#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; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。