在一张卡片上写下希望一起组队同学的编号,顺序无所谓。
例如1号同学希望能和4,5两位同学组队。就是卡片上写4 5。
但是为了让大家都满意,只有在4号同学愿意和1 5组队,且5号同学愿意和1 4组队的场景下,该组队请求(1 4 5)才能成立,组队成功的同学才能参加比赛。
请通过代码计算出所有可以参赛同学的分组结果。多个队伍之间半角逗号分隔,组内成员之间半角空格分隔。
组与组之间按组内最小编号的成员正序排序,组内按人员编号正序排序。
注意:
- 多人组队场景,只有相关的所有人都愿意,才能组队成功。例如1号想和4,5组队, 4号想和1,5组队,但是5号只想和4组队。此时1,4,5三人组队不成功,三人都无法参赛。
- 假设某同学只愿意自己独立一队(即不愿意和任何人组队),可以在纸上写self。则认为该同学自己组队,且能成功参赛。例如1号想和4,5组队,但是4号想和1,5组队,但是5号不想组队,打算独自参赛。此时1,4,5三人组队不成功,但是5号个人组队成功。1,4无法参赛,5号独立一队可以参赛。
- 如果所有同学都无法组队成功。返回na
- 输入的第一行表示有多少人参加报名,之后的每一行,依次代表每位同学的组队意愿。
输入:
// 一共多少人报名 // 第一行表示1号希望和4号、5号组队 // 第二行表示2号希望和3号组队 // 第三行表示3号希望和2号组队 // 第四行表示4号希望和1号、5号组队 // 第五行表示5号希望和1号、4号组队
输出:
组与组之间按组内编号最小成员的编号排序,组内按编号排序
输入范例:
54 5321 51 4
输出范例:
1 4 5,2 3
C++模板
#include <iostream>
#include <vector>
#include <numeric>
#include <limits>
using namespace std;
/** 请完成下面这个函数,实现题目要求的功能 **/
/** 当然,你也可以不按照这个模板来作答,完全按照自己的想法来 ^-^ **/
string process(vector < string > input) {
}
int main() {
string res;
int _input_size = 0;
cin >> _input_size;
cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');
vector<string> _input;
string _input_item;
for(int _input_i=0; _input_i<_input_size; _input_i++) {
getline(cin, _input_item);
_input.push_back(_input_item);
}
res = process(_input);
cout << res << endl;
return 0;
}
#include <vector>
#include <numeric>
#include <limits>
using namespace std;
/** 请完成下面这个函数,实现题目要求的功能 **/
/** 当然,你也可以不按照这个模板来作答,完全按照自己的想法来 ^-^ **/
string process(vector < string > input) {
}
int main() {
string res;
int _input_size = 0;
cin >> _input_size;
cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');
vector<string> _input;
string _input_item;
for(int _input_i=0; _input_i<_input_size; _input_i++) {
getline(cin, _input_item);
_input.push_back(_input_item);
}
res = process(_input);
cout << res << endl;
return 0;
}
Java模板
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Main {
/** 请完成下面这个函数,实现题目要求的功能 **/
/** 当然,你也可以不按照这个模板来作答,完全按照自己的想法来 ^-^ **/
static String process(String[] input) {
}
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String res;
int _input_size = 0;
_input_size = Integer.parseInt(in.nextLine().trim());
String[] _input = new String[_input_size];
String _input_item;
for(int _input_i = 0; _input_i < _input_size; _input_i++) {
try {
_input_item = in.nextLine();
} catch (Exception e) {
_input_item = null;
}
_input[_input_i] = _input_item;
}
res = process(_input);
System.out.println(res);
}
}
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Main {
/** 请完成下面这个函数,实现题目要求的功能 **/
/** 当然,你也可以不按照这个模板来作答,完全按照自己的想法来 ^-^ **/
static String process(String[] input) {
}
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String res;
int _input_size = 0;
_input_size = Integer.parseInt(in.nextLine().trim());
String[] _input = new String[_input_size];
String _input_item;
for(int _input_i = 0; _input_i < _input_size; _input_i++) {
try {
_input_item = in.nextLine();
} catch (Exception e) {
_input_item = null;
}
_input[_input_i] = _input_item;
}
res = process(_input);
System.out.println(res);
}
}