【编程题目 |100分】 分班问题【2021 H2, 2022 Q1,Q2 考试题】
时间限制:C/C++ 1秒,其他语言 2秒
空间限制:C/C++262144K,其他语言524288K
64bit IO Format:%lld
本题可使用本地IDE编码,不能使用本地已有代码,无跳出限制,
编码后请点击”保存并调试“按钮进行代码提交。
■ 题目描述
【分班问题】
- 幼儿园两个班的小朋友在排队时混在了一起,每位小朋友都知道自己是否与前面一位小朋友同班,请你帮忙把同班的小朋友找出来。
- 小朋友的编号是整数,与前一位小朋友同班用Y表示,不同班用N表示。
- 学生序号范围(0,999],如果输入不合法则打印ERROR。
输入描述:
- 输入为空格分开的小朋友编号和是否同班标志。
输出描述:
- 输出为两行,每一行记录一个班小朋友的编号,编号用空格分开,且:
- 1.编号需按照升序排列。
- 2.若只有一个班的小朋友,第二行为空行。
示例1 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
1/N 2/Y 3/N 4/Y
输出
1 2
3 4
示例2 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
1/N 2/Y 3/N 4/Y 5/Y
输出
1 2
3 4 5
C++解法一
#include <bits/stdc++.h> #include <utility> using namespace std; static void SplitString(string input, vector<string> &output, string pattern) { string::size_type pos; input += pattern; for (int i = 0; i < input.size(); i++) { pos = input.find(pattern, i); if (pos < input.size()) { string temp = input.substr(i, pos - i); if ((temp != pattern) && (!temp.empty())) { output.push_back(temp); } i = pos + pattern.size() - 1; } } }
剩余50%内容,订阅会员后查看
隐藏内容
此处内容需要权限查看
会员免费查看C++解法二
#include<bits/stdc++.h> using namespace std;
剩余50%内容,订阅会员后查看
隐藏内容
此处内容需要权限查看
会员免费查看JAVA解法一
import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.Scanner; public class X2 { public static final String ERROR = "ERROR"; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String data = scanner.nextLine();
剩余50%内容,订阅会员后查看
隐藏内容
此处内容需要权限查看
会员免费查看JAVA解法二
import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String[] input = sc.nextLine().split(" ");
剩余50%内容,订阅会员后查看
import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String[] input = sc.nextLine().split(" "); List<Integer> list1 = new ArrayList<>(); List<Integer> list2 = new ArrayList<>(); int preCla = 1; for (int i = 0; i < input.length; i++) { String[] num = input[i].split("/"); if (i == 0) { list1.add(Integer.parseInt(num[0])); preCla = 1; continue; } if (preCla == 1) { if (num[1].equals("Y")) { list1.add(Integer.parseInt(num[0])); } else { list2.add(Integer.parseInt(num[0])); preCla = 2; } } else {//N if (num[1].equals("Y")) { list2.add(Integer.parseInt(num[0])); } else { list1.add(Integer.parseInt(num[0])); preCla = 1; } } } Collections.sort(list1); Collections.sort(list2); for (Integer integer : list1) { System.out.print(integer + " "); } System.out.println(); for (Integer integer : list2) { System.out.print(integer + " "); } } }
JAVA解法三
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String[] strings = sc.nextLine().split(" "); List<Character> list1 = new ArrayList<>(); List<Character> list2 = new ArrayList<>();
剩余50%内容,订阅会员后查看
隐藏内容
此处内容需要权限查看
会员免费查看Python解法一
import sys if __name__ == "__main__": array1 = sys.stdin.readline().strip("\n").split() result = [] array2 = []
剩余50%内容,订阅会员后查看
隐藏内容
此处内容需要权限查看
会员免费查看Python解法二
try: s = input().split() res = [[], []]
剩余50%内容,订阅会员后查看
隐藏内容
此处内容需要权限查看
会员免费查看Python解法三
import traceback while 1: try: nums = input().split()
剩余50%内容,订阅会员后查看
隐藏内容
此处内容需要权限查看
会员免费查看JavaScript解法一
let strings = readLine().split(" "); let list1 = []; let list2 = [];
剩余50%内容,订阅会员后查看
隐藏内容
此处内容需要权限查看
会员免费查看JavaScript解法二
let str = '1/N 2/Y 3/N 4/Y'
剩余50%内容,订阅会员后查看
隐藏内容
此处内容需要权限查看
会员免费查看声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。