hdu1022-Train Problem I
来源:互联网 发布:mac系统怎么装ps 编辑:程序博客网 时间:2024/05/16 10:12
3 123 3213 123 312
Yes.inininoutoutoutFINISHNo.FINISHFor the first Sample Input, we let train 1 get in, then train 2 and train 3.So now train 3 is at the top of the railway, so train 3 can leave first, then train 2 and train 1.In the second Sample input, we should let train 3 leave first, so we have to let train 1 get in, then train 2 and train 3.Now we can let train 3 leave.But after that we can't let train 1 leave before train 2, because train 2 is at the top of the railway at the moment.So we output "No.".HintHint
代码实现:
#include<iostream>
#include<cstring>
#include<stack>
using namespace std;
int main()
{
int n,po[100],s[100],i,j,k,mark,sum,f,g,in[100];
char a[100],b[100];
stack<char> q;
while(cin>>n>>a>>b)
{
while(!q.empty())
{
q.pop();
}
f=1;//标记结果,0表示no,1表示yes
sum=0;//标记有多少步操作
memset(po,-1,sizeof(po));//标记操作的数组,1进 0出
memset(s,0,sizeof(s));//标记每个数是否在栈中,0不在 1在
memset(in,0,sizeof(in));//标记每个数是否已经入过栈,入过栈为1
// for(i=0;i<10;i++)
// {
// cout<<s[i]<<" ";
// }
for(i=0; i<n; i++)
{
//cout<<1;
// cout<<b[i]<<endl;
// cout<<s[b[i]-'0']<<endl;
g=0;
if(s[b[i]-'0']==0)
{
//cout<<1;
for(j=0; j<n; j++) //找b[i]在a字符串里的位置
{
if(a[j]==b[i])
{
mark=j;
//cout<<mark;
g=1;
break;
}
}
if(g==0)
{
f=0;
break;
}
for(j=0; j<=mark; j++)
{
if(in[a[j]-'0']==0)
{
in[a[j]-'0']=1;
q.push(a[j]);
s[a[j]-'0']=1;
po[sum++]=1;
}
}
s[a[mark]-'0']=0;
po[sum++]=0;
q.pop();
}
else
{
//cout<<2;
if(q.top()==b[i])
{
s[b[i]-'0']=0;
po[sum++]=0;
q.pop();
}
else
{
f=0;
break;
}
}
}
if(f==0)
{
cout<<"No.\nFINISH\n";
}
else
{
cout<<"Yes.\n";
for(i=0; i<sum; i++)
{
if(po[i]==1)
{
cout<<"in\n";
}
else
{
cout<<"out\n";
}
}
cout<<"FINISH\n";
}
while(!q.empty())
{
q.pop();
}
}
return 0;
}
这道题目做着好费劲
1.总思路为:遍历b数组,判断每个字符是否在栈中,如果不在,在a字符串中把b[i]及b[i]之前没有入过栈的字符入栈,这里不是把a字符串中把b[i]及b[i]之前的字符入栈,前面已经出栈的和入栈还没有出栈的,就不需要再重复入栈了,然后弹出b[i];如果在,看栈顶的字符是不是b[i],如果是,弹出,如果不是,输出no
2.a,b数组中存的是字符,用整型数组标记的时候,记得减去‘0’
- HDU1022 Train Problem I
- HDU1022 Train Problem I
- HDU1022:Train Problem I
- HDU1022--Train Problem I
- hdu1022-Train Problem I
- HDU1022 Train Problem I
- hdu1022 Train Problem I
- hdu1022 Train Problem I
- HDU1022 Train Problem I
- HDU1022 Train Problem I
- hdu1022 Train Problem I
- hdu1022-Train Problem I
- hdu1022 - Train Problem I
- hdu1022 Train Problem I
- HDU1022 Train Problem I 数据结构
- HDU1022--Train Problem I(栈)
- hdu1022——Train Problem I
- HDU1022--Train Problem I HDU(136)
- hdu 5151 Sit sit sit(区间DP+组合数学)
- Android 绘图(二) Canvas
- 数据挖掘十大经典算法
- 在C语言中,double、long、unsigned、int、char类型数据所占字节数
- linux第八天
- hdu1022-Train Problem I
- Impala
- 穿越栅栏
- java Android面试题
- android 中listview的使用
- 一段按键精灵vbs脚本
- 从零开始学习android---页面布局
- 验证码的前世今生(前世篇)
- Allegro 铺铜