网易云2018游戏开发笔试--泡泡沟通,群成员排序

2023-11-11 05:10

本文主要是介绍网易云2018游戏开发笔试--泡泡沟通,群成员排序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述:

网易内部都使用泡泡作为沟通的工具。对于一个群组,泡泡显示当前群成员列表的规则为:

  1. 当前状态分为在线/离线两种,在线的人员会比离线的人员显示靠前;
  2. 每个群组都有拥有者,管理员以及普通成员三种身份,当两人当前状态相同时,拥有者的显示会最靠前,其次是管理员,最后是普通成员。一个群组可能有多个拥有者和多个管理员;
  3. 如果两人当前状态以及身份都相同时,则按名字的字典序从小到大排序。

假设一个群组一开始所有成员都是离线状态(按姓名字典序从小到大排序),经过一系列成员的上线/下线操作之后,求出当前的群组成员显示列表。

输入描述:

每个输入数据只包含1个测试点。

每个测试点的第一行为数字N ,N范围为(0,50],表示群组的人数,然后下面是N行,每行描述一位群成员的信息:第一个数字表示身份(0为普通成员,1为管理员,2为拥有者),紧接着是成员的昵称,昵称只包含小写字母,且长度不超过30。没有成员的昵称相同。

然后一行是数字M,M范围为(0,1000],表示有M个成员状态变化的记录,后面M行,以时间从先到后的顺序列出状态变化记录,每行首先是成员昵称,然后用一个数字表示该成员的操作s,(0表示下线,1表示上线),保证状态切换合法,即离线状态只会为上线操作,在线状态只会为离线操作。

输出描述:

输出M个成员状态变化记录后,成员列表的显示状态。输出N行,每行一个成员昵称。
这里写图片描述
这里写图片描述

解题思路:
在一个二维向量中保存用户信息,有n个用户就有n行,每一行有三个参数,分别表示姓名,状态(Y为在线,N为离线)和身份(0为普通成员,1为管理员,2为拥有者),将状态初始化为离线状态。遍历所有的离线/在线状态变化,修改相应的状态信息,最后按照字典序先后输出 在线拥有着,在线管理员,在线普通成员,离线拥有着,离线管理员,离线普通成员

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;int main()
{int n, rank;string name, state = "N";                      //所有人状态初始化为离线vector<vector<string> >people;cin >> n;//vector有n行,表示有n个人,每一行有三个元素,分别为姓名,//状态(Y为在线,N为离线)和身份(0为普通成员,1为管理员,2为拥有者)for (int i = 0; i < n; i++){cin >> rank;cin >> name;vector<string> tmp;tmp.push_back(name);                      //姓名tmp.push_back(state);                     //状态tmp.push_back(to_string(rank));           //身份people.push_back(tmp);                    //向people中push_back的元素为vector}int numchange;cin >> numchange;int change;                                   //操作(0表示下线,1表示上线)//每一次上线离线操作,找出对应的人,修改对应的状态for (int i = 0; i < numchange; i++){cin >> name;cin >> change;for (int j = 0; j < n; j++){if (name == people[j][0]){if (change == 1)                  //查找对应的人people[j][1] = "Y";else if (change == 0)             //修改对应的状态people[j][1] = "N";}}}//查看所有人的信息(姓名,状态,身份)for (int i = 0; i < people.size(); i++){for (int j = 0; j < people[0].size(); j++){cout << people[i][j] << "  ";}cout << endl;}vector<string>result;vector<string>tmp1;for (int i = 0; i < people.size(); i++){if (people[i][1] == "Y"&&people[i][2] == "2")tmp1.push_back(people[i][0]);}sort(tmp1.begin(), tmp1.end());for (int i = 0; i < tmp1.size(); i++)result.push_back(tmp1[i]);vector<string>tmp2;for (int i = 0; i < people.size(); i++){if (people[i][1] == "Y"&&people[i][2] == "1")tmp2.push_back(people[i][0]);}sort(tmp2.begin(), tmp2.end());for (int i = 0; i < tmp2.size(); i++)result.push_back(tmp2[i]);vector<string>tmp3;for (int i = 0; i < people.size(); i++){if (people[i][1] == "Y"&&people[i][2] == "0")tmp3.push_back(people[i][0]);}sort(tmp3.begin(), tmp3.end());for (int i = 0; i < tmp3.size(); i++)result.push_back(tmp3[i]);vector<string>tmp4;for (int i = 0; i < people.size(); i++){if (people[i][1] == "N"&&people[i][2] == "2")tmp4.push_back(people[i][0]);}sort(tmp4.begin(), tmp4.end());for (int i = 0; i < tmp4.size(); i++)result.push_back(tmp4[i]);vector<string>tmp5;for (int i = 0; i < people.size(); i++){if (people[i][1] == "N"&&people[i][2] == "1")tmp5.push_back(people[i][0]);}sort(tmp5.begin(), tmp5.end());for (int i = 0; i < tmp5.size(); i++)result.push_back(tmp5[i]);vector<string>tmp6;for (int i = 0; i < people.size(); i++){if (people[i][1] == "N"&&people[i][2] == "0")tmp6.push_back(people[i][0]);}sort(tmp6.begin(), tmp6.end());for (int i = 0; i < tmp6.size(); i++)result.push_back(tmp6[i]);cout << endl;for (int i = 0; i < result.size();i++)cout << result[i]<<endl;return 0;
}

这篇关于网易云2018游戏开发笔试--泡泡沟通,群成员排序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/387768

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

hdu 1285(拓扑排序)

题意: 给各个队间的胜负关系,让排名次,名词相同按从小到大排。 解析: 拓扑排序是应用于有向无回路图(Direct Acyclic Graph,简称DAG)上的一种排序方式,对一个有向无回路图进行拓扑排序后,所有的顶点形成一个序列,对所有边(u,v),满足u 在v 的前面。该序列说明了顶点表示的事件或状态发生的整体顺序。比较经典的是在工程活动上,某些工程完成后,另一些工程才能继续,此时

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码