L1-030 一帮一 (15 分)

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

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


输入格式:

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


输出格式:

每行输出一组两个学生的姓名,其间以1个空格分隔。名次高的学生在前,名次低的学生在后。小组的输出顺序按照前面学生的名次从高到低排列。


输入样例:

1. 8
2. 0 Amy
3. 1 Tom
4. 1 Bill
5. 0 Cindy
6. 0 Maya
7. 1 John
8. 1 Jack
9. 0 Linda

结尾无空行

输出样例:

1. Amy Jack
2. Tom Linda
3. Bill Maya
4. Cindy John

结尾无空行

其实挺简单的,我使用了flag标记,用过的人就变成1(不再采用)

上代码:

C语言:


#include <stdio.h>
struct stu {
  int x;
  char y[9];
  int flag; //未用
};
int main() {
  int n;
  scanf("%d", &n);
  struct stu a[n];
  for (int i = 0; i < n; i++) {
    scanf("%d%s", &a[i].x, a[i].y);
    a[i].flag = 0;
  }
  for (int i = 0; i < n / 2; i++) {
    a[i].flag = 1;
    for (int j = n - 1; j > 0; j--) {
      if (a[j].flag == 0 && (a[i].x != a[j].x)) {
        printf("%s %s\n", a[i].y, a[j].y);
        a[j].flag = 1;
        break;
      }
    }
  }
  return 0;
}

C++:

#include <iostream>
#include <string>
using namespace std;
struct stu {
  int x;
  string y;
  int flag; //未用
};
int main() {
  int n;
  cin >> n;
  struct stu a[n];
  for (int i = 0; i < n; i++) {
    cin >> a[i].x >> a[i].y;
    a[i].flag = 0;
  }
  for (int i = 0; i < n / 2; i++) {
    a[i].flag = 1;
    for (int j = n - 1; j > 0; j--) {
      if (a[j].flag == 0 && (a[i].x != a[j].x)) {
        cout << a[i].y << " " << a[j].y << endl;
        a[j].flag = 1;
        break;
      }
    }
  }
  return 0;
}
相关文章
|
6月前
1071 小赌怡情 (15 分)
1071 小赌怡情 (15 分)
|
6月前
|
存储 编解码
1068 万绿丛中一点红 (20 分)
1068 万绿丛中一点红 (20 分)
|
6月前
|
数据安全/隐私保护
1048 数字加密 (20 分)
1048 数字加密 (20 分)
|
6月前
|
测试技术
1039 到底买不买 (20 分)
1039 到底买不买 (20 分)
L1-041 寻找250 (10 分)
L1-041 寻找250 (10 分)
220 0
L1-041 寻找250 (10 分)
L1-054 福到了 (15 分)
L1-054 福到了 (15 分)
82 0
L1-054 福到了 (15 分)
|
C语言 C++
1086 就不告诉你 (15 分)
做作业的时候,邻座的小盆友问你:“五乘以七等于多少?”你应该不失礼貌地围笑着告诉他:“五十三。”本题就要求你,对任何一对给定的正整数,倒着输出它们的乘积。
357 0
1086 就不告诉你 (15 分)
1002. A+B for Polynomials(25分)
1002. A+B for Polynomials(25分)
68 0
h0148. 66 (30 分)
h0148. 66 (30 分)
103 0
L1-029 是不是太胖了 (5 分)
L1-029 是不是太胖了 (5 分)
106 0