IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> PTA 1065 单身狗 (25 分) C++实现 -> 正文阅读

[C++知识库]PTA 1065 单身狗 (25 分) C++实现

1065 单身狗 (25 分)

“单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱。

输入格式:

输入第一行给出一个正整数 N(≤ 50 000),是已知夫妻/伴侣的对数;随后 N 行,每行给出一对夫妻/伴侣——为方便起见,每人对应一个 ID 号,为 5 位数字(从 00000 到 99999),ID 间以空格分隔;之后给出一个正整数 M(≤ 10 000),为参加派对的总人数;随后一行给出这 M 位客人的 ID,以空格分隔。题目保证无人重婚或脚踩两条船。

输出格式:

首先第一行输出落单客人的总人数;随后第二行按 ID 递增顺序列出落单的客人。ID 间用 1 个空格分隔,行的首尾不得有多余空格。

输入样例:

3
11111 22222
33333 44444
55555 66666
7
55555 44444 10000 88888 22222 11111 23333
结尾无空行

输出样例:

5
10000 23333 44444 55555 88888
结尾无空行

解题思路:

先利用数组或map容器建立情侣数之间的对应关系,再将参加派对的人数作为数组的下标来找是否有相应的对应关系,如果没有,则代表它为单身狗
Tips:每人对应一个 ID 号,为 5 位数字(从 00000 到 99999),这时的输出有两种处理:
①将输入的id号看成是字符串,输出的时候就按原字符串输出即可
②id号不看成字符串就看成纯数字,但是输出的时候要用printf("%05d",x);这种格式

代码示例(第①种处理,超时):

#define _CRT_SECURE_NO_DEPRECATE
#include <iostream>
#include <algorithm>
#include <iomanip>
#include <vector>
#include <string>
#include <cmath>
#include <numeric>
#include <map>

using namespace std;

int main()
{
	int n;
	cin >> n; //情侣总数

	map<string, string> lovers; //建立情侣数对应关系
	for (int i = 0; i < n; i++)
	{
		string mate1, mate2;
		cin >> mate1 >> mate2;

		lovers[mate1] = mate2;
		lovers[mate2] = mate1;
	}

	int total; //参加派对的总人数
	cin >> total;

	vector<string> res;
	for (int i = 0; i < total; i++)
	{
		string temp;
		cin >> temp;
		res.push_back(temp);
	}

	//将参加派对的数字按升序排序,便于后续处理
	sort(res.begin(), res.end()); 

	vector<string> ans; //存单身数字
	for (int i = 0; i < res.size(); i++)
	{
		int key = 0; //标记是否单身(为1不单身,为0单身)
		for (int j = 0; j < res.size(); j++)
		{
			if (lovers[res[i]] == res[j])
			{
				key = 1;
				break;
			}
		}

		if (key == 0)
		{
			ans.push_back(res[i]);
		}
	}

	cout << ans.size() << endl; //输出单身总数
	int flag = 1; //输出控制
	for (int i = 0; i < ans.size(); i++)
	{
		if (flag > 1)
		{
			cout << " ";
		}
		cout << ans[i];
		flag++;
	}
}

运行结果:

在这里插入图片描述

代码示例(第②种处理,完美通过):

#define _CRT_SECURE_NO_DEPRECATE
#include <iostream>
#include <algorithm>
#include <iomanip>
#include <vector>
#include <string>
#include <cmath>
#include <numeric>
#include <map>

using namespace std;

int main()
{
	int n;
	cin >> n; //情侣总数

	vector<int> lovers(100005, -1); //建立情侣数对应关系
	for (int i = 0; i < n; i++)
	{
		int mate1, mate2;
		cin >> mate1 >> mate2;

		lovers[mate1] = mate2;
		lovers[mate2] = mate1;
	}

	int total;
	cin >> total; //参加派对的总人数

	vector<int> res;
	for (int i = 0; i < total; i++)
	{
		int temp;
		cin >> temp;
		res.push_back(temp);
	}
	
	//将参加派对的数字按升序排序,便于后续处理
	sort(res.begin(), res.end());

	vector<int> ans; //存单身数字
	for (int i = 0; i < res.size(); i++)
	{
		int key = 0;
		for (int j = 0; j < res.size(); j++)
		{
			if (lovers[res[i]] == res[j])
			{
				key = 1;
				break;
			}
		}

		if (key == 0)
		{
			ans.push_back(res[i]);
		}
	}

	cout << ans.size() << endl; //输出单身总数
	int flag = 1; //输出控制
	for (int i = 0; i < ans.size(); i++)
	{
		if (flag > 1)
		{
			cout << " ";
		}
		printf("%05d",ans[i]);
		flag++;
	}
}

运行结果:在这里插入图片描述

明天就是七夕节了,先提前祝大家七夕快乐!热闹是你们的,而我就是那个单身狗🐕

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-14 13:50:50  更:2021-08-14 13:51:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 12:14:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码