• 题目:排队


    题目描述

    OIER银行只有一个窗口,进去取钱的人们必须沿直线整齐排队,整条队只可以容得下26个人.而且宽度只能够一个人站立.所以OIER们排得不耐烦走人是很困难的.如果这人是在中间,那么必须前面所有人离开或后面所有人离开,然后走掉一个人,再重新恢复队伍.(当然,如果前面人少,就前面的人退出去;后面人少,就后面的人退出来,如果那个要走的人在中间,就后面的人离开,让别人先走.嘻嘻,看来OIER都很团结).
    如我们给从后到前的人标号,为ABCDEF.那么C要走,A和B须从后面退出来,C才能够离开.然后先走的人先进,(注意顺序是反了的).那么变成BADEF.如果是D要走,那么E和F退出去再进来,变为ABCFE.
    现在要求您编写程序,打印此过程.

    输入格式

    第一行为字符串字母(大写),表示人们的队伍顺序.字母不会重复.
    第二行是S,表示接下来的S行,每一行有而且只有一个大写字母表示人需要离开的顺序.

    输出格式

    第一行输出最初的顺序.
    接下来有S行,每行输每离开一个人后,队伍的顺序.

    题解:

    令我不解的是,我的代码只能的60分,此题需再研究。

    代码:

    View Code
     1 #include<iostream>
    2 using namespace std;
    3
    4 char a[27],b[27];int h=0,l,top=1;
    5
    6 void qianmian(int j){
    7 int i;
    8 for(i=h;i<j;i++)
    9 {b[top]=a[i];top++;}
    10 h++;
    11 for(i=h;i<=j;i++)
    12 {a[i]=b[top-1];top--;}
    13 }
    14
    15 void houmian(int j){
    16 int i;
    17 for(i=l;i>j;i--)
    18 {b[top]=a[i];top++;}
    19 l--;
    20 for(i=l;i>=j;i--)
    21 {a[i]=b[top-1];top--;}
    22 }
    23
    24 int main()
    25 {
    26 int s,i,j;
    27 cin>>a>>s;
    28 l=strlen(a)-1;
    29
    30 for(j=h;j<=l;j++)
    31 cout<<a[j];
    32 cout<<endl;
    33 if(l==0) return 0;
    34 for(i=1;i<=s;i++)
    35 {
    36 char q;
    37 cin>>q;
    38 j=h;
    39 while(a[j]!=q)
    40 j++;
    41 if(j<=(l-h)/2)
    42 qianmian(j);
    43 else houmian(j);
    44 for(j=h;j<=l;j++)
    45 cout<<a[j];
    46 cout<<endl;
    47 }
    48 return 0;
    49 }
    
    
  • 相关阅读:
    angular、vue使用感受
    API网关在API安全性中的作用
    分享一个国内首个企业级开源的GO语言网关--GoKu API Gateway
    几种部署Goku API Gateway的方式,最快一分钟可使用上网关
    热门开源网关的性能对比:Goku > Kong > Tyk
    如何通过网关做服务编排?
    未来实现API管理系统的几个关键词
    关于未来实现API管理系统的几个关键词
    让API实现版本管理的实践
    医疗行业如何使用API市场?
  • 原文地址:https://www.cnblogs.com/noip/p/2330696.html
Copyright © 2020-2023  润新知