2017-4-26阿里客户端笔试题2

在一张卡片上写下希望一起组队同学的编号,顺序无所谓。

例如1号同学希望能和4,5两位同学组队。就是卡片上写4 5。

但是为了让大家都满意,只有在4号同学愿意和1 5组队,且5号同学愿意和1 4组队的场景下,该组队请求(1 4 5)才能成立,组队成功的同学才能参加比赛。

请通过代码计算出所有可以参赛同学的分组结果。多个队伍之间半角逗号分隔,组内成员之间半角空格分隔。

组与组之间按组内最小编号的成员正序排序,组内按人员编号正序排序。

 

注意:

  1. 多人组队场景,只有相关的所有人都愿意,才能组队成功。例如1号想和4,5组队, 4号想和1,5组队,但是5号只想和4组队。此时1,4,5三人组队不成功,三人都无法参赛。
  2. 假设某同学只愿意自己独立一队(即不愿意和任何人组队),可以在纸上写self。则认为该同学自己组队,且能成功参赛。例如1号想和4,5组队,但是4号想和1,5组队,但是5号不想组队,打算独自参赛。此时1,4,5三人组队不成功,但是5号个人组队成功。1,4无法参赛,5号独立一队可以参赛。
  3. 如果所有同学都无法组队成功。返回na

  1. 输入的第一行表示有多少人参加报名,之后的每一行,依次代表每位同学的组队意愿。

输入:
// 一共多少人报名 // 第一行表示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;


}



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);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值