HDU1022--Train Problem I HDU(136)

来源:互联网 发布:mmm金融互助平台源码 编辑:程序博客网 时间:2024/05/22 12:34

【题目】点击打开链接

【题解】简单的栈应用,看到网上一堆一堆的STL就烦,直接用多个数组做一下。

#pragma warning(disable:4786)#include<iostream>#include<algorithm>#include<cmath>#include<stdio.h>#include<time.h>#include<stdlib.h>#include<queue>#include<set>#include<vector>#include<string>#include<ctime>#include<string.h>using namespace std;#define pi acos(-1.0)//#define LL __int64typedef long long LL;#define INF 0x7fffffffffffffff#define bug puts("hear!")#define inf 0x7fffffff#define eps 1e-10#define FRE freopen("in.txt","r",stdin)#define E exp(1.0)#define mod 1000000007int main(){ int n,i,j,k,t,r[23],stack[13];  char si[13],so[13];  while(scanf("%d",&n)!=EOF)  {      getchar();      memset(r,0,sizeof(r));      memset(stack,0,sizeof(stack));      scanf("%s%s",si,so);      stack[1]=si[0];r[0]=1;      for(k=t=j=1,i=0;so[i]!='\0';i++)       {          while(t<n)          {            if(j>0&&stack[j]==so[i]) //出栈            {               j--;              r[k++]=2;//记录进出栈的情况              break;            }            stack[++j]=si[t++];//进栈            r[k++]=1; //记录进出栈的情况          }          printf("%d\n",j);         if(stack[j]==so[i])//出栈        {            j--;            r[k++]=2; //记录进出栈的情况        }     }       n=n<<1;       if(k<n)         printf("No.\nFINISH\n");       else         {   printf("Yes.\n");             for(i=0;i<k;i++)               switch(r[i])               {                   case 1:printf("in\n");break;                   case 2:printf("out\n");break;               }             printf("FINISH\n");         }  }  return 0;}


原创粉丝点击