【xdoj-离散线上练习H】T234(C++)

 解题心得:

写递归函数的时候,首先写终止条件,这有助于对整个递归函数的把握。

题目:输入集合A和B,输出A到B上的所有函数。

问题描述

给定非空数字集合A和B,求出集合A到集合B上的所有函数。

输入格式

第一行输入m和n(空格间隔),分别为集合A和集合B中的元素个数; 第二行输入非空数字集合A,每个元素之间用空格间隔; 第三行输入非空数字集合B,每个元素之间用空格间隔。

输出格式

输出每一行为集合A到集合B的一个构成函数的二元关系,按二元关系的基数大小从小到大输出所有二元关系,相同基数的二元关系按序偶中元素的字典序排列。

样例输入

2 2

1 2

3 4

样例输出

{<1,3>,<2,3>}

{<1,3>,<2,4>}

{<1,4>,<2,3>}

{<1,4>,<2,4>}

实现思路:

  1. 预处理:利用优先队列将集合中元素从小到大放进数组A,B中
  2. 递归实现:每行中A的元素全部被输出,是确定的,我们用递归更新B中要输出的元素,并在每次递归的末端cout一行结果

总体代码实现(已给出代码注释)

#include<bits/stdc++.h>
using namespace std;int main()
{//预处理:利用优先队列将集合中元素从小到大放进数组A,B中int m, n, cur;cin>>m>>n;priority_queue<int>pq;	vector<int>A(m);vector<int>B(n);for(int i=0; i<m; i++) {cin>>cur; pq.push(cur);}for(int i=1; i<=m; i++) {A[m-i] = pq.top(); pq.pop();		}for(int i=0; i<n; i++) {cin>>cur; pq.push(cur);}for(int i=1; i<=n; i++) {B[n-i] = pq.top(); pq.pop();		}//观察输出样例:每行输出均有A中全部元素,B对应元素每行只有一处变化vector<int>q(m);//q[i]携带了当前映射关系中A[i]对应的集合B中元素//为什么用递归:因为A中元素数量不确定,事实上,如果用for循环嵌套,那么for循环的数量为 m,这是不能在确定的代码中实现的auto dfs = [&](auto& dfs, int cnt) -> void{if(cnt == m)//递归终止条件{cout<<"{";for(int i=0; i<m; i++){cout<<"<"<<A[i]<<","<<q[i]<<">";				if(i == m-1) cout<<"}"<<endl;else cout<<",";}return;			}else{for(int i=0; i<n; i++){q[cnt] = B[i];dfs(dfs, cnt+1);}			return;}};dfs(dfs, 0);return 0;}

~希望对你有帮助~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/70866.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基础连接已经关闭: 服务器关闭了本应保持活动状态的连接

您在进行 HTTP 请求时遇到“基础连接已经关闭: 服务器关闭了本应保持活动状态的连接”的错误&#xff0c;这通常与连接的保持活动&#xff08;Keep-Alive&#xff09;设置有关。以下是可能的原因和解决方法&#xff1a; 可能的原因&#xff1a; Keep-Alive 设置&#xff1a; 默…

MybatisPlus常用增删改查

记录下MybatisPlus的简单的增删改查 接口概述 Service和Mapper区别 Mapper简化了单表的sql操作步骤&#xff08;CRUD&#xff09;&#xff0c;而Serivce则是对Mapper的功能增强。 Service虽然加入了数据库的操作&#xff0c;但还是以业务功能为主&#xff0c;而更加复杂的SQL…

17 MOS管

参考资料 全面认识MOS管&#xff0c;一篇文章就够了-云社区-华为云基础知识中 MOS 部分迟迟未整理&#xff0c;实际分享的电路中大部分常用电路都用到了MOS管&#xff0c;今天势必要来一篇文章&#xff0c;彻底掌握mos管&#xff01;https://bbs.huaweicloud.com/blogs/375339…

pnpm的使用

pnpm的使用 1.安装和使用2.统一包管理工具下载依赖 1.安装和使用 pnpm:performant npm &#xff0c;意味“高性能的npm”。 pnpm由npm/yarn衍生而来,解决了npm/yarn内部潜在的bug,极大的优化了性能,扩展了使用场景。被誉为“最先进的包管理工具”。 pnpm安装指令: npm i -g p…

World of Warcraft [CLASSIC][Grandel] FOR THE HORDE

《World of Warcraft [CLASSIC][80猎人][Grandel]维克尼拉斯大型纪录片2025年元宵节击杀联盟主城4BOSS[为了部落&#xff01;]》 World of Warcraft [CLASSIC][80猎人][Grandel]维克尼拉斯大型纪录片2025年元宵节击杀联盟主城4BOSS[为了部落&#xff01;]_魔兽

Docker 网络的几种常见类型

目录 Docker 网络类型 桥接网络&#xff08;Bridge&#xff09; 通俗解释 特点 使用场景 示例 主机网络&#xff08;Host&#xff09; 通俗解释 特点 使用场景 示例 None 网络 通俗解释 特点 使用场景 示例 Overlay 网络 通俗解释 特点 使用场景 示例 Ma…

SSH隧道+Nginx:绿色通道详解(SSH Tunnel+nginx: Green Channel Detailed Explanation)

SSH隧道Nginx&#xff1a;内网资源访问的绿色通道 问题背景 模拟生产环境&#xff0c;使用两层Nginx做反向代理&#xff0c;请求公网IP来访问内网服务器的网站。通过ssh隧道反向代理来实现&#xff0c;重点分析一下nginx反代的基础配置。 实验环境 1、启动内网服务器的tomca…

人生的转折点反而迷失了方向

就像我老婆说的&#xff0c;我是抽空结了一个婚。今天是上班的第三天&#xff0c;不知道是出于何种原因&#xff0c;自己反而陷入了深深的困境&#xff0c;没有了斗志&#xff0c;原因也找不出来&#xff0c;白天在公司没有很大量的产出&#xff0c;晚上回去是想学一学&#xf…

SQLite 数据库:优点、语法与快速入门指南

文章目录 一、引言二、SQLite 的优点 &#x1f4af;三、SQLite 的基本语法3.1 创建数据库3.2 创建表3.3 插入数据3.4 查询数据3.5 更新数据3.6 删除数据3.7 删除表 四、快速入门指南4.1 安装 SQLite4.2 创建数据库4.3 创建表4.4 插入数据4.5 查询数据4.6 更新数据4.7 删除数据4…

uniapp 编译生成鸿蒙正式app步骤

1&#xff0c;在最新版本DevEco-Studio工具新建一个空项目并生成p12和csr文件&#xff08;构建-生成私钥和证书请求文件&#xff09; 2&#xff0c;华为开发者平台 根据上面生成的csr文件新增cer和p7b文件&#xff0c;分发布和测试 3&#xff0c;在最新版本DevEco-Studio工具 文…

ADB详细教程

目录 一、ADB简介 二、配置 配置环境变量 验证是否安装成功 三、简单使用 基本命令 设备连接管理 USB连接 WIFI连接&#xff08;需要USB线&#xff09; 开启手机USB调试模式 开启USB调试 四、其他 更换ADB默认启动端口 一、ADB简介 ADB&#xff08;Android Debug…

CNN-BiLSTM卷积神经网络双向长短期记忆神经网络多变量多步预测,光伏功率预测

代码地址&#xff1a;CNN-BiLSTM卷积神经网络双向长短期记忆神经网络多变量多步预测&#xff0c;光伏功率预测 CNN-BiLSTM卷积神经网络双向长短期记忆神经网络多变量多步预测 一、引言 1.1、研究背景和意义 光伏功率预测在现代电力系统中占有至关重要的地位。随着可再生能源…

三、OSG学习笔记-应用基础

前一章节&#xff1a;二、OSG学习笔记-入门开发-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145513874 一、 OsgGA: 界面事件处理空间&#xff0c;处理操作各种操作器的最大名字空间&#xff1b; GUIEventHandler: ui 事件操作类 注意&#xff1a;在启…

Django开发入门 – 0.Django基本介绍

Django开发入门 – 0.Django基本介绍 A Brief Introduction to django By JacksonML 1. Django简介 1) 什么是Django? 依据其官网的一段解释&#xff1a; Django is a high-level Python web framework that encourages rapid development and clean, pragmatic design. …

计算机毕业设计PySpark+Hadoop+Hive机票预测 飞机票航班数据分析可视化大屏 航班预测系统 机票爬虫 飞机票推荐系统 大数据毕业设计

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

【车载项目】 systemui下拉负一屏界面,通过语音输入:“中文模式/英文模式“,会闪现一下负一屏下层的画面

1、背景 【操作步骤】负一屏界面&#xff0c;语音输入&#xff1a;“中文模式/英文模式” 【预期结果】显示正常 【实际结果】 会闪现一下负一屏下层的文字 【发生概率】必现 systemui下拉负一屏界面&#xff0c;通过语音输入&#xff1a;“中文模式/英文模式”&#xff0c;会…

从零到一:基于Rook构建云原生Ceph存储的全面指南(上)

文章目录 一.Rook简介二.Rook与Ceph架构2.1 Rook结构体系2.2 Rook包含组件1&#xff09;Rook Operator2&#xff09;Rook Discover3&#xff09;Rook Agent 2.3 Rook与kubernetes结合的架构图如下2.4 ceph特点2.5 ceph架构2.6 ceph组件 三.Rook部署Ceph集群3.1 部署条件3.3 获取…

vue3 怎么自动全局注册某个目录下的所有 vue 和 tsx 组件

在开发 vue3 项目时&#xff0c;我们会有这样的诉求&#xff0c;怎么自动全局注册某个目录下的所有 vue 和 tsx 组件&#xff1f; 虽然已经有非常强大的 unplugin-vue-components 支持&#xff0c;但是在某些动态场景下&#xff0c;unplugin-vue-components 也选择了不支持。 …

机器学习数学基础:21.特征值与特征向量

一、引言 在现代科学与工程的众多领域中&#xff0c;线性代数扮演着举足轻重的角色。其中&#xff0c;特征值、特征向量以及相似对角化的概念和方法&#xff0c;不仅是线性代数理论体系的核心部分&#xff0c;更是解决实际问题的有力工具。无论是在物理学中描述系统的振动模式…

算法02-各种排序算法

各种常见排序算法总结 一. 冒泡排序 (Bubble Sort) 冒泡排序是一种简单的排序算法。它重复地遍历要排序的列表&#xff0c;比较相邻的元素&#xff0c;并交换它们的位置&#xff0c;直到整个列表排序完成。 A、说明&#xff1a; 特点&#xff1a; 通过不断交换相邻元素&am…