【招商银行数据方向笔试题】—— 信用卡推荐客户列表

题目:
现在信用卡开展营销活动,持有我行信用卡客户推荐新户办卡,开卡成功后可获得积分奖励。规定每个客户最多可推荐两个新户且一个新户只能被推荐一次。但允许链接效应,即若客户A推荐了新户B,新户B推荐新户C,则客户C同时属于A和B的推荐列表。简单起见,只考虑以一个老客户A作起点推荐的情况。编程计算推荐新户数不小于n的客户列表。

输入示例:
5 2
A B C
C F *
B D E
D G *
E H I

输入描述:
输入的第一行为以空格分隔的两个正整数,第一个表示原始推荐列表的个数m,第二个表示n的取值。
其后m行每行均为一个以空格分隔的原始推荐列表,第一列为推荐人,后面两列为被推荐人,若该推荐人只推荐了一个新户,则第三列以*替代。推荐人和被推荐人均以大写字母表示,不同字母代表不同的人。

输出示例:
A B E

输出描述:
即在同一行输出符合条件的客户列表,无顺序要求,客户间以空格分隔。若客户列表为空,则输出None。

题目理解:
重点:链接效应——决定深度搜索的树结构
即:在以一个老客户A作为起点的推荐情况建立一棵二叉树,求这棵二叉树上左右两个树枝上数量不小于n的所有结点

解题步骤:

  1. 建图
  2. 深度优先搜索

代码:

## 1. 初始化
m,n = map(int,input().split(" ")) 
#input()取到第一行输入,int把str转换成int;
#map用于多参数多返回值的函数计算,
#例如:res1,res2 = map(func(),输入参数)#树中所有成员的初始字典——key为输入值, value为对应的树结点对象,提前告诉编译器‘*’值的结点对象为None,否则*.val=*
mem = {"*":None} #这里使用字典是为了把每个输入与结点对象对应
degree = set()#除了根节点以外的所有结点的集合
# 目的:最后用mem-degree就可以知道谁是根节点,用集合存储可以自动去重## 2.构建二叉树图:把所有输入变成结点对象,并让每个结点知道自己的左右孩子
#2.1 定义结点类
class ListNode:def __init__(self,x):#初始一个结点对象的值是它自身,左右结点都为空self.val = xself.left = Noneself.right = None#2.2 把字符输入变成结点对象
# 循环m次(有m个推荐表,_为占位符)
for _ in range(m):root,left,right = input().split() #每人推荐的两个人分别为左右孩子(这里仅为定义变量名,还未起到实质作用)#把字符输入变成结点对象if root not in mem: mem[root] = ListNode(root)if left not in mem:mem[left] = ListNode(left)if right not in mem:mem[right] = ListNode(right)#  把新的成员结点加入到集合中(自动去重)degree.add(left)degree.add(right)# 2.3 把父节点和子节点真正地串联起来_root,_left,_right = mem[root],mem[left],mem[right]_root.left = _left_root.right = _right
#注:树的结构是保存在每个结点的结点对象里的,即让每个结点找到他们的左右结点# 2.4 找到树的根节点
#root 节点是入度为0的节点  
root = (set(mem) - degree).pop() #用pop()取得集合中的元素,否则取到的是有一个对象的集合# 3. 查找——DFS
#建立用来存储结果的全局变量
global ans
ans = []#DFS查找函数,查找到符合条件的结果放入全局变量ans中
#DFS,常规操作
def dfs(root):global ans # 记住全局变量也需要在函数中再声明一遍,不然访问不到if root: # 如果结点不为空,找他们的左右孩子left = dfs(root.left) #得到左边分支上结点个数right = dfs(root.right) #得到右边分支上结点的个数this = left + right + 1  #这个位置结点的数量需要加上它自身(1),否则对于它的上一层结点来说,就会少掉1个结点的数量if this >= n + 1:  # 因为这里算推荐新客户的数量不小于n,需要减掉推荐人自身,即this-1>=nans.append(root.val) #推荐新客户数量不少于2时加入到结果列表中return this # 返回当前结点的左右分支结点数再加上它自己一个,给他的父节点return 0 # 如果结点为空,返回该位置结点的数量为0#调用查找函数计算结果,传入之前建图后找到的根节点开始
dfs(mem[root])
if ans: #如果结果不为空print(" ".join(ans)) #按格式输出
else: # 否则
#None也要print出来,不然会少一个回车符print(None) 

这里画出树的搜索路径
在这里插入图片描述

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

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

相关文章

金融银行测试面试题分享

1、网上银行转账是怎么测的,设计一下测试用例。 回答思路: 宏观上可以从质量模型(万能公式)来考虑,重点需要测试转账的功能、性能与安全性。设计测试用例可以使用场景法为主,先列出转账的基本流和备选流。…

CNAPS Code 查询(招商银行)

招商银行的妹子实在太傻了,根本不知道什么是CNAPS Code、联行号,完全答非所问。 最后还是自己搞定了,如图: 最后再看看招行人员的英语水平,真是不知道什么是东西: 我的群:1、Cocos2D&Unity&Java程序…

性能超越GPU、FPGA,华人学者提出软件算法架构加速AI实时化

作者 | 王言治,美国东北大学电子与计算机工程系助理教授 出品 | AI科技大本营(ID:rgznai100) 近年来,机器学习(Machine Learning)领域的研究和发展可谓是与日俱新,各式各样与机器学习相关的研究成果与应用层出不穷&…

OpenAI到底做对了什么?

OpenAI通过一系列在AI技术和产品上的突破,引爆了通用人工智能(AGI)的发展,被微软CEO 萨提亚 纳德拉称为“堪比工业革命的技术浪潮”。OpenAI趟出来的以大语言模型为主的AGI技术路线,也基本上宣告了其他AI技术路线的终…

OpenAI到底做对了什么?李建忠研思

OpenAI通过一系列在AI技术和产品上的突破,引爆了通用人工智能(AGI)的发展,被微软CEO 萨提亚 纳德拉称为“堪比工业革命的技术浪潮”。OpenAI趟出来的以大语言模型为主的AGI技术路线,也基本上宣告了其他AI技术路线的终…

使用chatGPT完成股票价格预测模型

序言 笔者对国内股票的程序API不甚了解,所以使用国外的股票平台Finazon,请读者自行参考。 在本文中,我使用Finazon获取我们想预测的股票的价格时间序列数据,然后,我们将这些数据输入到 ChatGPT 生成的程序中。包括数…

HM-GNN:基于分子-基序异构图神经网络的分子表示学习模型

今天给大家介绍一篇由爱荷华州立大学的Zhaoning Yu 与Hongyang Gao发表在ICML(International Conference on Machine Learning)上的文章。作者在该论文中考虑学习分子的基序级特征表示以改善分子整体的特征学习,基于此搭建了分子-基序异构图神…

神经元图片结构图,人脑神经元图片

神经元结构图示 。 (1)由图一可知,图一结构中涉及到3个神经元,含有2个突触,其中A是轴突(神经纤维),B是树突.(2)图二中①是感受器、②是传入神经…

神经元的结构模型图片,神经元模型图片解析

神经元模式图 。 (1)神经元的基本结构包括细胞体和突起两部分.从图中可以看出画了2个细胞体,因此图中画了2个神经元.(2)图中结构①是细胞核,②是树突,③是轴突&#xf…

神经元结构示意图讲解图,神经元的结构示意图

神经元结构图示 。 (1)由图一可知,图一结构中涉及到3个神经元,含有2个突触,其中A是轴突(神经纤维),B是树突.(2)图二中①是感受器、②是传入神经…

大脑皮层由神经组织构成,大脑神经网络结构图片

1、组成大脑皮层的主要结构是什么,可以接说一下吗 大脑皮层是由6层神经细胞组成的。在进化中,它由下层到上层依次生成,从而这些不同层次结构的功能也不尽相同。在功能上,它们被分为3个级区:初级区、次级区和联络区。 …

神经元的结构示意图手绘,神经元的结构图手绘

神经元结构图示 。 (1)由图一可知,图一结构中涉及到3个神经元,含有2个突触,其中A是轴突(神经纤维),B是树突.(2)图二中①是感受器、②是传入神经…

神经元图片结构图,一个神经元简图

神经元模式图 。 (1)神经元的基本结构包括细胞体和突起两部分.从图中可以看出画了2个细胞体,因此图中画了2个神经元.(2)图中结构①是细胞核,②是树突,③是轴突&#xf…

绘制神经元的结构模式图,神经元结构示意图简易

神经元结构图示 。 (1)由图一可知,图一结构中涉及到3个神经元,含有2个突触,其中A是轴突(神经纤维),B是树突.(2)图二中①是感受器、②是传入神经…

机器学习保研面试问答

最近在准备东南palm实验室的面试,准备了这些问题。 参考:(81条消息) 保研面试/考研复试机器学习问题整理机器学习考研一匹好人呀的博客-CSDN博客 (81条消息) 保研考研面试—机器学习机器学习考研moluggg的博客-CSDN博客 [(81条消息) 夏令营]——东南大学…

PL/SQL Developer - SQL Monitoring Report 查看华丽丽的执行报告

通过PL/SQL Developer中SQL Monitoring Report的功能,查看华丽丽的执行报告和实际执行计划。 注意事项: 1. 执行sql之后才会生成session,才能生成华丽丽的执行报告。正因如此这里的执行计划是实际执行计划,和explain plan for的预…

华丽丽的未来分界线!

经过一番慎重的考虑,我终于做了一个决定:从今天开始,办公室和笔记本电脑统统格调linux,只要windows! 人的精力是有限的,要学会合理分配自己的精力和时间。对linux的深究已经对我的科研没有任何帮助了&#…

活动丨4场直播华丽丽来袭,快来参与

1. 【推荐】聚数智赢未来——云和恩墨2020年夏季产品发布会(2020-06-10) 云和恩墨作为数据资产端到端的解决方案提供商,多年来围绕数据提供安全、统一、连续、高效的产品和服务。本次2020年夏季产品发布会,我们以“聚数智赢未来”…

“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作

一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于…

【万里征程——Windows App开发】使用华丽丽的字体

所有的TextBlock等都用的默认字体,大家是否会感觉很千篇一律很枯燥呢?对于FontFamily,我们见过一些可以用的字体,但这个属性不像Foreground等有下拉框,所以我们在应用中见过的许多有意思的字体却没法用,因为…