问题 G: 21级期末机试-谍影寻踪(10分)

题目描述

2020年10月,国家安全机关组织实施“迅雷-2020”专项行动,破获数百起间谍窃密事件,有效维护了国家安全和利益。在行动中,我方安全机关破获了一个情报组织,他们是单线联系的。我方给情报组织中的每个人员一个唯一的代号。同时,情报人员为了隐秘,可能会有不同的姓名编号(设定最多两个姓名编号)。我方顺藤摸瓜,分别截获并返回组织信息。请你帮忙汇总并恢复这条组织链条。

输入

多组样例。每组样例包括多行输入,第一行包含一个正整数n(0<n≤1000),表示截获到的情报数。接下来的n行输入形式为A->B,表示A单向联系B,B是A的下线。A和B表示两名组织人员的信息,包括代号x和姓名编号y,用逗号“,”分开。代号x和姓名编号y为整数,满足1≤x,y≤999999。除了第一行,A或B的代号信息在之前的行中出现过。

输出

对于每一组样例,按照顺序在一行中输出该组织的所有成员的信息,用“->”间隔。每个输出占一行。如果有一个代号有两个姓名编号,则认为是一个成员,输出代号和对应的两个姓名编号,用“#”分开。如有两个信息1,2345和1,6666,输出时对应一个成员信息1,2345#6666,两个姓名编号先输入的在前面。

样例输入 Copy

3
1,1234->5,2236
5,2236->3,7177
7,3234->1,1234
4
1,258->10,111111
5,4353->1,36900
7,22->5,4353
10,159->20,220102
2
1,111->2,222
1,101->2,202

样例输出 Copy

7,3234->1,1234->5,2236->3,7177
7,22->5,4353->1,258#36900->10,111111#159->20,220102
1,111#101->2,222#202
#include <stdio.h>
#include <string.h> struct XXX
{int id;int name1;int name2;
};
//整数n(0<n≤1000),表示截获到的情报数
//最多有1001个 int main()
{int n;while(scanf("%d",&n)!=EOF){struct XXX xunlei[1005]={0};int count=0; //已有多少人员for(int i=0;i<n;i++){int Ax,Ay,Bx,By;scanf("%d,%d->%d,%d",&Ax,&Ay,&Bx,&By);//第一次直接创建if(i==0){xunlei[0].id = Ax;xunlei[0].name1 = Ay;xunlei[0].name2 =0 ;xunlei[1].id = Bx;xunlei[1].name1 = By; xunlei[1].name2 =0 ;count=2; }else{//查找新数据的A和B的位置int posA=-1, posB=-1;for(int i=0;i<count;i++){if(xunlei[i].id==Ax)       //如果找到已经存在的人员,更新name{posA=i;if(xunlei[i].name1!=Ay)    //如果人员有了新名字,在name2更新{xunlei[i].name2=Ay;    }} if(xunlei[i].id==Bx)       //如果找到已经存在的人员,更新name{posB=i;if(xunlei[i].name1!=By)    //如果人员有了新名字,在name2更新{xunlei[i].name2=By;    } }}if(posA==-1 && posB!=-1) //B已存在,A不存在、{//将A插在B的前面for(int i=count-1;i>=posB;i--){xunlei[i+1]=xunlei[i];}xunlei[posB].id=Ax;xunlei[posB].name1=Ay;xunlei[posB].name2=0;count++;}if(posA!=-1 && posB==-1)  //A存在,B不存在{//把A后面的都往后移,A的后面存放Bfor(int i=count-1;i>=posA+1;i--){xunlei[i+1]=xunlei[i];}xunlei[posA+1].id=Bx;xunlei[posA+1].name1=By;xunlei[posA+1].name2=0;count++;    }if(posA!=-1 && posB!=-1){//可能就是增加了name项,上面已经更新了。}if(posA==-1 && posB==-1){//没有关联。不管 }}}for(int i=0;i<count;i++){if(i==0){if(xunlei[i].name2==0)printf("%d,%d",xunlei[i].id,xunlei[i].name1);elseprintf("%d,%d#%d",xunlei[i].id,xunlei[i].name1,xunlei[i].name2); }else{if(xunlei[i].name2==0)printf("->%d,%d",xunlei[i].id,xunlei[i].name1);elseprintf("->%d,%d#%d",xunlei[i].id,xunlei[i].name1,xunlei[i].name2); }}printf("\n");} return 0;
}

问题 G: 21级期末机试-谍影寻踪(10分)相关推荐

  1. 【华为OD机试真题 JAVA】分积木

    JS版:[华为OD机试真题 JS]分积木 标题:分积木 | 时间限制:1秒 | 内存限制:32768K | 语言限制:不限 Solo和koko是两兄弟,妈妈给了他们一大堆积木,每块积木上都有自己的重量 ...

  2. android高级编程实操期末机试试题,《网络高级编程》201001机考试题A

    C#高级编程期末试题 2010<网络高级编程>试题(A卷) (时间:100分钟满分:100) 1.创建C#项目 创建一个名为:exam09班级名册序号姓名拼音VS版本(如,1班,名册序号为 ...

  3. 【华为OD机试 2023 B卷 | 200分】We Are A Team(C++ Java JavaScript Python)

    2023年5月份,华为官方已经将的 2022/0223Q(1/2/3/4)统一修改为 2023A卷和2023B卷.你收到的链接上面会标注A卷还是B卷.请注意:根据反馈,目前大部分收到的都是B卷.B卷对 ...

  4. 华为OD机试(2023.5新题) 分苹果(java,py,c++,js)

    华为OD机试真题目录:真题目录 本文章提供java.python.c++.jsNode四种代码 题目描述 A.B两个人把苹果分为两堆,A希望按照他的计算规则等分苹果,他的计算规则是按照二进制加法计算, ...

  5. 【华为OD机试 2023 B卷 | 100分】 统计射击比赛成绩(C++ Java JavaScript )

    在线OJ 已购买本专栏用户,请私信博主开通账号,在线刷题!!! 运行出现 Runtime Error 0Aborted,请忽略 华为OD统一考试A卷+B卷 新题库说明 2023年5月份,华为官方已经将 ...

  6. 【华为机试真题JavaScript】分班

    目录 题目描述 输入描述 输出描述 参考代码 机试介绍 写在最后 题目描述 两个班的小朋友混在了一队,每个小朋友都知道自己和前面的人是不是同班(同班Y,不同班N) 要求小朋友编号为整数,不会小于0或大 ...

  7. 【华为机试真题 JAVA】分班问题-100

    [编程题目 |100分] 分班问题[2021 H2, 2022 Q1,Q2 考试题] 时间限制:C/C++ 1秒,其他语言 2秒 空间限制:C/C++262144K,其他语言524288K 64bit ...

  8. 【华为OD机试真题 JS】分班

    标题:分班 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限 幼儿园两个班的小朋友在排队时混在了一起,每位小朋友都知道自己是否与前面一位小朋友是否同班,请你帮忙把同班的小朋友找出来 ...

  9. 华为od机试(适用B卷),独家整理 已参加机试人员的实战技巧

    华为 OD 机试过程中,都会碰到哪些问题呢,橡皮擦今天为大家整理一下,希望对即将参加机试的[你]有所帮助. 这个是一系列关于华为 OD 的各种问题,你也可以在评论区提问 每篇博客精选 OD 参与者的 ...

最新文章

  1. SmartRules让MindManager的交互图变得更加智能
  2. struts 数据库连接
  3. jquery简单使用入门
  4. 如何从官方渠道下载Spring MVC所需jar包
  5. android之SQLite数据库insert操作
  6. php usort strcmp,字符串函数演示和usort()进行二维数组排序(0827)
  7. CMake with WinMinGW
  8. Atitit.php  nginx页面空白 并返回500的解决
  9. selenium3 + python - js处理readonly属性
  10. ajax无刷新提交表,Ajax无刷新提交表单和显示
  11. LeetCode刷题——279. 完全平方数
  12. pca主成分分析_PCA主成分分析(中)
  13. wsdl2java 命令 服务端_使用Axis2中的工具wsdl2Java的生成客户端和服务端代码
  14. 通过python让打印出来的字体看起来像手写
  15. 计算机信息系统用户管理规定,计算机信息系统保密管理暂行办法 | 中华全国商业信息中心...
  16. 百度地图开发入门(6):3D建筑
  17. Google无法验证此账号归你所有解决方法
  18. 浅谈 Lempel-Ziv压缩方法
  19. day2 用户体验及用户需求(用户体验五要素、需求、需求收集、需求池)
  20. git clone出现 fatal: unable to access ‘https://github.com/...‘的解决办法(亲测有效)

热门文章

  1. 拼音分词器多音字处理
  2. 斯坦福UE4 + C++课程学习记录 18:十字准星
  3. Unity小技巧 - 绘制瞄准准心
  4. 如何更快地判断算术运算有没有溢出?
  5. C++11~C++20 备忘录
  6. 云计算DNS的优缺点
  7. 线下+线上双管齐下,订单管理系统助力餐饮业提升销量
  8. 视频教程-Cocos2d-x 游戏开发详解-Cocos
  9. ATOM不争气 INTEL操纵PCMARK2005来黑NANO?[我写绿色IT]
  10. 天津Java开发培训班哪家好?选机构攻略