美文网首页
L1_030(一帮一)

L1_030(一帮一)

作者: 我好菜啊_ | 来源:发表于2018-03-22 22:17 被阅读0次

    “一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚未分组的学生中,将名次最靠前的学生与名次最靠后的异性学生分为一组。


    输入格式:
    输入第一行给出正偶数N(<=50),即全班学生的人数。此后N行,按照名次从高到低的顺序给出每个学生的性别(0代表女生,1代表男生)和姓名(不超过8个英文字母的非空字符串),其间以1个空格分隔。这里保证本班男女比例是1:1,并且没有并列名次。
    输出格式:
    每行输出一组两个学生的姓名,其间以1个空格分隔。名次高的学生在前,名次低的学生在后。小组的输出顺序按照前面学生的名次从高到低排列。


    输入样例:
    8
    0 Amy
    1 Tom
    1 Bill
    0 Cindy
    0 Maya
    1 John
    1 Jack
    0 Linda
    输出样例:
    Amy Jack
    Tom Linda
    Bill Maya
    Cindy John


    #include <iostream>
    #include <string>
    using namespace std;
    int main()
    {
        int n;
        cin>>n;
        int sex[25];//存前一半人按成绩顺序的性别,题目有讲最多50个人
        string girl[25];
        string boy[25];
        int ig=0,ib=0;//初始化girl,boy数组时使用的下标
        for(int i=0;i<n;++i)
        {
            int s;
            string name;
            cin>>s;
            if(i<n/2)
                sex[i]=s;
            cin>>name;
            if(s){
                boy[ib]=name;
                ++ib;
            }else{
                girl[ig]=name;
                ++ig;
            }
        }
        int bg=0,bb=0,eg=n/2-1,eb=n/2-1;
        for(int i=0;i<n/2;++i)
        {
            if(i)
                cout<<endl;
            if(sex[i]){
                cout<<boy[bb]<<" "<<girl[eg];
                ++bb;--eg;
            }else{
                cout<<girl[bg]<<" "<<boy[eb];
                ++bg;--eb;
            }
        }
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:L1_030(一帮一)

          本文链接:https://www.haomeiwen.com/subject/vuidqftx.html